Aktionen

Proxmox Mail Gateway PMG Spam Report E-Mail anpassen

Aus znilwiki

Changelog:

  • 21.04.2025 erste Version

Vorwort

Per Standardeinstellung sieht der Daily Spam Report for so aus:


Ich wollte das ganze etwas anpassen (insbesondere für meine Familie).
Dabei bin ich auf diesen Beitrag im Proxmox-Forum gestoßen: https://forum.proxmox.com/threads/custom-spamreport-template.161367/ Auf Basis dieses Beitrags habe ich meine eigene Version entwickelt.


Template bereitstellen / kopieren

Das per Default verwendete Template liegt unter

/var/lib/pmg/templates/spamreport-verbose.tt

Das sollte man nicht bearbeiten da es bei einem Update/Upgrade überschrieben werden könnte.
Statt dessen müsst Ihr es an einer bestimmten Stelle hinterlegen, die ich aber erst anlegen musste:
Meldet auch als root auf euerem Mailgateway an und nutzt folgende Befehle:

mkdir /etc/pmg/templates
cp /var/lib/pmg/templates/spamreport-verbose.tt /etc/pmg/templates/
pmgconfig sync --restart 1

Ab diesem Zeitpunkt nimmt er für die Reports die Kopie in /etc/pmg/templates/.


Template bearbeiten

Die Kopie /etc/pmg/templates/spamreport-verbose.tt könnt Ihr nun bearbeiten:

nano /etc/pmg/templates/spamreport-verbose.tt

und etwas Ändern, z.B. den Titel und Texte auf Deutsch abändern:

[%- IF timespan == 'week' -%]
[%- SET title = "Wöchentlicher Spam Report für '${pmail}' - ${date}'" -%]
[%- ELSE %]
[%- SET title = "Täglicher Spam Report für '${pmail}' - ${date}" -%]
[%- END -%]

Ihr seht schon, die Umlaute bitte HTML-Codiert, siehe z.B. https://tecfa.unige.ch/guides/selfhtml/zeichen.htm
Speichern und ... wie schaut man sich diese nun an?


Vorschau des Spam-Reports erhalten

Der Report wird normalerweise täglich um MItternacht versendet.
Mit folgendem Befehl könnte Ihr diesen aber sofort senden:

pmgqm send --receiver bernhard@znil.de

Dafür müsst Ihr aber auch eine Spam-Mail bereit liegen haben, sonst passiert nichts.
Man kann sich auch den Report von gestern senden lassen:

pmgqm send --timespan yesterday --receiver bernhard@znil.de

oder den Report eines anderen an sich senden lassen:

pmgqm send --receiver mysqldumper.backups@znil.net --redirect bernhard@znil.de

Die Zeile senden den Spamreport für mysqldumper.backups@znil.net an bernhard@znil.de

Per

pmgqm status

bekommt Ihr eine Liste aller Benutzer / Email-Adressen für welche ein Report heute anstehen würde:

Count  Spamlevel Mail
6          11.00 xxxxx.xxxxxxx@znil.de
2           4.00 xxxx@znil.de
4           8.00 xxxx@xxxxenen.de
1          14.00 xxxxxxx@znil.de
2          20.00 xxxx-xxxxx_xxx@znil.net
3           5.00 bernhard@znil.de
1           3.00 xxxxx@znil.de
1           3.00 xxxx@xxxxenen.de
2           6.50 xxxxxx@znil.de
1           7.00 xxxxxxxxxx.xxxxxxxxxx@znil.de
2          12.00 mysqldumper.backups@znil.net
1          10.00 xxxxxx@znil.de
1          16.00 xxxxxx@znil.de

Die Hilfe zu den Befehlen erhaltet Ihr über

pmgqm help
pmgqm help status
pmgqm help send



Mein Template

Mein aktuelles Template sieht so aus:


und das ist die Vorlage:

<!DOCTYPE html>
  <!-- Checks whether it is a weekly or daily report with date formatting -->
[%- IF timespan == 'week' -%]
    [%- SET formatted_date = date.split('-').reverse().join('.') -%]
    [%- SET title_plain = "W&ouml;chentlicher Spam-Bericht f&uuml;r '${pmail}' - ${formatted_date}" -%]
    [%- SET title_html = "W&ouml;chentlicher Spam-Bericht f&uuml;r<br>'${pmail}' - ${formatted_date}'" -%]
[%- ELSE -%]
    [%- SET formatted_date = date.split('-').reverse().join('.') -%]
    [%- SET title_plain = "T&auml;glicher Spam-Bericht ${formatted_date} f&uuml;r Email-Adresse: '${pmail}'" -%]
    [%- SET title_html = "T&auml;glicher Spam-Bericht ${formatted_date} f&uuml;r Email-Adresse:<br>'${pmail}'" -%]
[%- END -%]

            [% BLOCK tooltip %]
    Received: [% d.date %] [% d.time %]
    From: [% d.envelope_sender %]
    TO: [% d.receiver %]
    Size: [% d.bytes %]
    Score: [% d.spamlevel %]
    File: [% d.file %]
    [% END %]
<html>
  <head>
    <title>[% title_plain %]</title>
    <style>
      body {
        font-family: Arial, sans-serif;
        margin: 0;
        padding: 0;
        background-color: #f4f4f4;
        color: #333;
      }
      .container {
        width: 100%;
        margin: 20px auto;
        background: #fff;
        border: 1px solid #ddd;
        border-radius: 5px;
        overflow: hidden;
      }
      p {
        margin: 5px 0px 0px 0px;
      }
          <!-- Header area with color definition -->
      .header {
        background-color: #0d1e67;
        color: #fff;
        padding: 10px 20px;
        display: flex;
        align-items: center;
      }
      .header img {
        height: 60px;
        width: 96px;
        margin-right: 15px;
      }
      .header h1 {
        font-size: 18px;
        margin: 0;
        flex: 1;
        text-align: left;
      }
      .content {
        padding: 20px;
      }
      .email-item {
        #border-bottom: 2px solid #000000;
        padding-bottom: 10px;
      }
      .email-item:last-child {
        #border-bottom: none;
      }
      .mytable th, td {
         border: 1px solid #0d1e67;
         border-collapse: collapse;
         padding: 8px;
      }
      .mytable table {
         width: 100%;
         border-collapse: collapse;
      }
      .actions a {
        text-decoration: none;
        font-size: 14px;
        color: #0d1e67;
        padding: 5px 10px;
        border: 1px solid #0d1e67;
        border-radius: 3px;
        margin: 55px;
        # padding-top: 100px;
      }
      .actions a:hover {
        background-color: #000000;
        color: #fff;
      }
      .footer {
        text-align: center;
        padding: 10px;
        background-color: #f9f9f9;
        font-size: 18px;
        color: #666;
        width: 100%
      }
      hr {
        border: none;
        height: 3px;
        color: #880000;
        background-color: #880000;
      }
    </style>
  </head>
  <body>
        <!-- Start of the actual e-mail structure -->
    <table align="center" class="container" cellspacing="0" cellpadding="0" width="600">
      <tr>
        <td class="header" style="background: #FFCC00; color: #000000; padding: 10px 20px; display: flex; align-items: center;">
                <!-- Insert your Logo here -->
                <!-- <img src="https://somecoolurl.com/pmg.png" alt="Logo" style="height: 60px; width: 96px;"> -->
          <h1>[% title_html %]</h1>
        </td>
      </tr>
   </table>
   <br>
    <table class="footer">
      <tr>
        <td>
        <!-- <td class="footer"> -->
                <!-- Footer area with disclaimer -->
          <p>Verwalte Deine Spam-Quarant&auml;ne &uuml;ber das <a href="[% managehref | url %]">Webinterface</a>.</p>
          <!-- <p>Bereitgestellt von <a href="https://www.somecoolurl.com" target="_blank">My Website</a> - Disclaimer or something</p> -->
        </td>
      </tr>
    </table>
   <br>
   <!-- #<table> -->
      <!-- #<tr> -->
        <!-- <td class="content"> -->
          [% FOREACH item IN items %]
          <div class="email-item">
            <table class="mytable">
              <tr>
                <td><strong>Absender:</strong></th>
                <td>[% item.from %]</th>
              </tr>
              <tr>
                <td><strong>Betreff:</strong></td>
                <td><a href="[% item.href | url %]">[% item.subject %]</a></td>
              </tr>
              <tr>
                <td><strong>Erhalten:</strong></td>
                <td>[% item.date.split('-').reverse().join('.') %] um [% item.time %] Uhr</td>
              </tr>
            </table>
            <br>
            <div class="actions">
              <a href="[% item.href | url %]&action=whitelist">Whitelist</a>
              <a href="[% item.href | url %]&action=blacklist">Blacklist</a>
              <a href="[% item.href | url %]&action=deliver">Zustellen</a>
              <a href="[% item.href | url %]&action=delete">L&ouml;schen</a>
            </div>
            <br>
            <hr>
            <br>
          [% END %]
        <!-- </td> -->
      <!-- </tr> -->
      <br>
    <table class="footer">
      <tr>
        <td>
        <!-- <td class="footer"> -->
                <!-- Footer area with disclaimer -->
          <p>Verwalte Deine Spam-Quarant&auml;ne &uuml;ber das <a href="[% managehref | url %]">Webinterface</a>.</p>
          <!-- <p>Bereitgestellt von <a href="https://www.somecoolurl.com" target="_blank">My Website</a> - Disclaimer or something</p> -->
        </td>
      </tr>
    </table>
  </body>
</html>

Kommentare

Loading comments...