Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c7:mta_13 [04.03.2015 14:50. ] – [CGI-Scripte] djangocentos:mail_c7:mta_13 [22.07.2019 15:05. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 878: Zeile 878:
  AddHandler cgi-script .cgi  AddHandler cgi-script .cgi
  
- <Directory "/usr/share/mailgraph"> +    <Directory "/usr/share/mailgraph"> 
-    AllowOverride None +            AllowOverride None 
-    Options +ExecCGI +            Options +ExecCGI 
-    DirectoryIndex mailgraph.cgi +            DirectoryIndex mailgraph.cgi 
- Order deny,allow +            Order deny,allow 
- require IP 10.0.+     require IP 10.0.
  </Directory>  </Directory>
  ErrorLog logs/mailgraph_error.log  ErrorLog logs/mailgraph_error.log
Zeile 4004: Zeile 4004:
 </code> </code>
  
-   # mkdir -p /usr/share/mailgraph-ng{mx,mx11,mx12,mx13,mx14}+   # mkdir -p /usr/share/mailgraph-ng/{mx,mx11,mx12,mx13,mx14}
  
-Bei der **[[centos:mail_c7:mta_13?&#rpm-installation|RPM-Installation]]** von mailgraph wurden das Logo **///usr/share/mailgraph/rrdtool-3dlogo.png//** wie auch die CSS-Datei //**/usr/share/mailgraph/mailgraph.css**// bereits auf unseren Server kopiert. Fehlen diese beiden Dateien, kann man diese hier aus Django'WIKI herunterladen.+Bei der **[[centos:mail_c7:mta_13?&#rpm-installation|RPM-Installation]]** von mailgraph wurden das Logo **///usr/share/mailgraph/rrdtool-3dlogo.png//** wie auch die CSS-Datei //**/usr/share/mailgraph/mailgraph.css**// bereits auf unseren Server kopiert. Fehlen diese beiden Dateien, kann man diese hier aus Djangos WIKI herunterladen.
 {{ :centos:mail_c7:rrdtool-3dlogo.png?direct |Bild: RRDTOOL 3D Logo}} <file css /usr/share/mailgraph/mailgraph.css>    { margin: 0; padding: 0 } {{ :centos:mail_c7:rrdtool-3dlogo.png?direct |Bild: RRDTOOL 3D Logo}} <file css /usr/share/mailgraph/mailgraph.css>    { margin: 0; padding: 0 }
 body  { width: 900px; background-color: white; body  { width: 900px; background-color: white;
Zeile 8095: Zeile 8095:
 </file> </file>
  
-==== test ==== +==== CGI-Erweiterung für die Σ-Seite ==== 
-Die wesentlichen Änderungen/Erweiterung zum Originalscript aus dem RPM sind: +Wie auch schon bei den Einzelstatistiken sind bei der Σ-Seite, die die kumulierten Einzelgraphen enthält, umfangreichere Änderungen/Erweiterung des Originalscripts notwendig. 
-  * Änderungen des Verzeichnisses der Datenquellen (RRD-Dateien). Da wir bei der Gesamtstatistik die Summe der einzelnen Mailserver zur Anzeige bringen wollen, benötigen wir daher auch alle Datenquellen. Die Anzahl der Variablen **$rrd_* ** erhöht sich daher entsprechend!\\ <code perl>...+ 
 +=== Datenquellen === 
 +Da wir bei der Gesamtstatistik die Summe der einzelnen Mailserver zur Anzeige bringen wollen, benötigen wir daher auch alle Datenquellen. Die Anzahl der Variablen **$rrd_* ** erhöht sich daher entsprechend!  
 +<code perl>...
  
 my $rrd_11            = '/var/lib/mailgraph/mx11/mailgraph.rrd'; my $rrd_11            = '/var/lib/mailgraph/mx11/mailgraph.rrd';
Zeile 8134: Zeile 8137:
 ... ...
 </code> </code>
-  * Einfügen der Variablen **url** für die Verweise zu den jeweils anderen Statistikseiten.  \\ **BspMX11:** <code perl>...+ 
 +=== URL-Definitionen === 
 +Damit die Seite bei Portierungen ohne große Änderungen im Code realisiert werden können, wird für die Querverweise jeweils zugehörige URL's definiert 
 + 
 +<code perl>...
  
 my $url   = "http://mailgraph-ng.nausch.org/mx/"; my $url   = "http://mailgraph-ng.nausch.org/mx/";
Zeile 8150: Zeile 8157:
 ... ...
 </code> </code>
-  Berücksichtigung **aller Datenquellen** bei der Generierung der einzelnen GraphikenHierzu geben wir bei den RRD_GRAPH Parameter **DEF** immer alle Datenquellen an! Somit wird z.B. beim Graphen mit den nicht angenommenen Nachrichten **Rejected** statt der **beiden Zeilen** <code>                "DEF:rejected=$rrd:rejected:AVERAGE", + 
-                "DEF:mrejected=$rrd:rejected:MAX",</code> entsprechend **acht Zeilen**<code>"DEF:rejected_11=$rrd_11:rejected:AVERAGE", +=== Unterprogramme graph_xxx - kumulierte Werte für die Generierung der RRD-Graphiken === 
-                "DEF:mrejected_11=$rrd_11:rejected:MAX", +Bei der Generierung der kumulierten Graphiken stellt sich grundsätzlich die Frage, wie führt man den Inhalt mehrerer RRD-Dateien zusammen um einen Summengraph zu erstellen. Anstatt nun einen neue RRD-Datei mit dem Inhalt der vier einzelnen RRD-Dateien zu erstellen um daraus dann den Graphen zu generieren, wählen wir einen anderen Weg. Bei der Erstellung eines Summengraphen mit Hilfe von **RRD_GRAPH** bedienen wir uns nicht nur einer Quelle (RRD-Datei), sondern wir lassen **RRD_GRAPH** die Daten aus den einzelnen RRD-Dateien zusammenrechnen und erstellen dann den Graphen. 
-                "DEF:rejected_12=$rrd_12:rejected:AVERAGE", + 
-                "DEF:mrejected_12=$rrd_12:rejected:MAX", +Dazu müssen wir im ersten Schritt **alle Datenquellen** beim RRD_GRAPH Parameter **DEF** benennen. Somit wird z.B. beim Graphen mit den nicht angenommenen Nachrichten **Rejected** statt der **beiden Zeilen** <code> 
-                "DEF:rejected_13=$rrd_13:rejected:AVERAGE", +"DEF:rejected=$rrd:rejected:AVERAGE", 
-                "DEF:mrejected_13=$rrd_13:rejected:MAX", +"DEF:mrejected=$rrd:rejected:MAX", 
-                "DEF:rejected_14=$rrd_14:rejected:AVERAGE", +</code>  
-                "DEF:mrejected_14=$rrd_14:rejected:MAX",</code> +entsprechend **acht Zeilen** 
-  Bei der Generierung der eigentlichen Graphen, egal ob nun eine einfache Fläche, ein gestapelter Bereich oder ein Liniengraph erzeugt werden soll, ziehen wir die **Summe der vier RRD-Dateien** heran. Beim RRD_GRAPH Parameter **CDEF** bilden wir die Summe aus den Variablen <code>rejected_11, rejected_12, rejected_13 und rejected_14</code>. RRD_GRAPH berechnet die Summe dieser Werte wir folgt: <code> (((rejected_11 + rejected_12) + rejected_13) + rejected_14)</code>. In der RRD_GRAPH Notation wird daraus dann: <code>rrejected=rejected_11,rejected_12,+,rejected_13,+,rejected_14,+,</code>. Am Beispiel der **Rejected*Nachrichten erhalten wir somit folgende **CDEF**-Definition:<code>                "CDEF:rrejected=rejected_11,rejected_12,+,rejected_13,+,rejected_14,+,60,*", +<code> 
-                "CDEF:drejected=rejected_11,rejected_12,+,rejected_13,+,rejected_14,+,UN,0,rejected_11,rejected_12,+,rejected_13,+,rejected_14,+,IF,$step,*", +"DEF:rejected_11=$rrd_11:rejected:AVERAGE", 
-                "CDEF:srejected=PREV,UN,drejected,PREV,IF,drejected,+", +"DEF:mrejected_11=$rrd_11:rejected:MAX", 
-                "CDEF:rmrejected=mrejected_11,mrejected_12,+,mrejected_13,+,mrejected_14,+,60,*",</code> +"DEF:rejected_12=$rrd_12:rejected:AVERAGE", 
-  Erweiterung des Unterprogramms **print_html** um die links zu den verweisenden Statistikseiten.<code perl>... +"DEF:mrejected_12=$rrd_12:rejected:MAX", 
 +"DEF:rejected_13=$rrd_13:rejected:AVERAGE", 
 +"DEF:mrejected_13=$rrd_13:rejected:MAX", 
 +"DEF:rejected_14=$rrd_14:rejected:AVERAGE", 
 +"DEF:mrejected_14=$rrd_14:rejected:MAX", 
 +</code> 
 + 
 +Bei der Generierung der eigentlichen Graphen ziehen wir die **Summe der vier RRD-Dateien** heran, egal ob eine einfache Fläche, ein gestapelter Bereich oder ein Liniengraph erzeugt werden soll. Beim RRD_GRAPH Parameter **CDEF** lassen wir daher die Summe aus den Variablen //**rejected_11**////**rejected_12**////**rejected_13**// und //**rejected_14**// berechnen. 
 + 
 +Hierzu verwenden wir die //RRD_GRAPH eigene Berechnungssyntax// : ''∑ = %%((%%(A + B) + C) + D)''.  
 + 
 +Im Falle unseres Graphen über die Abgelehneten Nachrichten (**rejected**) berechnet sich die Gesamtsumme also wie folgt: \\ <code>∑ = (((rejected_11 + rejected_12) + rejected_13) + rejected_14)</code> 
 + 
 +Daraus wird dann in der //RRD_GRAPH eigenen Berechnungssyntax//: 
 +   ∑=rejected_11,rejected_12,+,rejected_13,+,rejected_14,+, 
 + 
 +Anstatt der ursprünglichen **CDEF**-Definitionen  
 +<code> 
 +"CDEF:rrejected=rejected,60,*", 
 +"CDEF:drejected=rejected,UN,0,rejected,IF,$step,*", 
 +"CDEF:rmrejected=mrejected,60,*", 
 +</code> 
 +verwenden wir also nachfolgende **CDEF**-Definitionen: 
 + 
 +<code> 
 +"CDEF:rrejected=rejected_11,rejected_12,+,rejected_13,+,rejected_14,+,60,*", 
 +"CDEF:drejected=rejected_11,rejected_12,+,rejected_13,+,rejected_14,+,UN,0,rejected_11,rejected_12,+,rejected_13,+,rejected_14,+,IF,$step,*", 
 +"CDEF:rmrejected=mrejected_11,mrejected_12,+,mrejected_13,+,mrejected_14,+,60,*", 
 +</code> 
 + 
 +Diese Änderungen tragen wir nun bei den Unterprogrammen **graph_xxx** nach. 
 + 
 +=== Unterprogramm print_html  === 
 +Wie auch schon bei den [[centos:mail_c7:mta_13?&#cgi-scripte_fuer_die_einzelsysteme|Unterprogrammen print_html der Einzelsysteme]], erweitern wir nun noch das Unterprogramm **print_html** um die links zu den verweisenden Statistikseiten. 
 +<code perl>... 
  
 sub print_html() sub print_html()
Zeile 8225: Zeile 8266:
                 print "<p><img src=\"$scriptname?${n}-d\" alt=\"mailgraph - greystats\"/></p>\n";                 print "<p><img src=\"$scriptname?${n}-d\" alt=\"mailgraph - greystats\"/></p>\n";
  
-                #print "<h4><center>Postscreen (positive) &Uuml;bersicht</center></h4>\n"; +                print "<h4><center>Postscreen (positive) &Uuml;bersicht</center></h4>\n"; 
-                #print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; +                print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; 
-                #print "<a href='$url12$n'>MX12</a>\n"; +                print "<a href='$url12$n'>MX12</a>\n"; 
-                #print "<a href='$url13$n'>MX13</a>\n"; +                print "<a href='$url13$n'>MX13</a>\n"; 
-                #print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; +                print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; 
-                #print "<p><img src=\"$scriptname?${n}-v\" alt=\"mailgraph - postscreen\"/></p>\n";+                print "<p><img src=\"$scriptname?${n}-v\" alt=\"mailgraph - postscreen\"/></p>\n";
  
-                #print "<h4><center>Postscreen Detailansicht</center></h4>\n"; +                print "<h4><center>Postscreen Detailansicht</center></h4>\n"; 
-                #print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; +                print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; 
-                #print "<a href='$url12$n'>MX12</a>\n"; +                print "<a href='$url12$n'>MX12</a>\n"; 
-                #print "<a href='$url13$n'>MX13</a>\n"; +                print "<a href='$url13$n'>MX13</a>\n"; 
-                #print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; +                print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; 
-                #print "<p><img src=\"$scriptname?${n}-w\" alt=\"mailgraph - postscreenstats\"/></p>\n";+                print "<p><img src=\"$scriptname?${n}-w\" alt=\"mailgraph - postscreenstats\"/></p>\n";
  
                 print "<h4><center>&Uuml;bersicht Mail-Queues</center></h4>\n";                 print "<h4><center>&Uuml;bersicht Mail-Queues</center></h4>\n";
Zeile 8260: Zeile 8301:
                 print "<p><img src=\"$scriptname?${n}-i\" alt=\"mailgraph - smtpd details\"/></p>\n";                 print "<p><img src=\"$scriptname?${n}-i\" alt=\"mailgraph - smtpd details\"/></p>\n";
  
-                #print "<h4><center>Sender policy Framework - SPF-Pr&uuml;fungen</center></h4>\n"; +                print "<h4><center>Sender policy Framework - SPF-Pr&uuml;fungen</center></h4>\n"; 
-                #print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; +                print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; 
-                #print "<a href='$url12$n'>MX12</a>\n"; +                print "<a href='$url12$n'>MX12</a>\n"; 
-                #print "<a href='$url13$n'>MX13</a>\n"; +                print "<a href='$url13$n'>MX13</a>\n"; 
-                #print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; +                print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; 
-                #print "<p><img src=\"$scriptname?${n}-f\" alt=\"mailgraph - spf checked\"/></p>\n";     +                print "<p><img src=\"$scriptname?${n}-f\" alt=\"mailgraph - spf checked\"/></p>\n";     
  
-                #print "<h4><center>DomainKeys Identified Mail - DKIM-Pr&uuml;fungen</center></h4>\n"; +                print "<h4><center>DomainKeys Identified Mail - DKIM-Pr&uuml;fungen</center></h4>\n"; 
-                #print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; +                print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; 
-                #print "<a href='$url12$n'>MX12</a>\n"; +                print "<a href='$url12$n'>MX12</a>\n"; 
-                #print "<a href='$url13$n'>MX13</a>\n"; +                print "<a href='$url13$n'>MX13</a>\n"; 
-                #print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; +                print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; 
-                #print "<p><img src=\"$scriptname?${n}-m\" alt=\"mailgraph - dkim checked\"/></p>\n";+                print "<p><img src=\"$scriptname?${n}-m\" alt=\"mailgraph - dkim checked\"/></p>\n";
  
-                #print "<h4><center>Domain-based Message Authentication, Reporting & Conformance - DMARC-Pr&uuml;fungen</center></h4>\n"; +                print "<h4><center>Domain-based Message Authentication, Reporting & Conformance - DMARC-Pr&uuml;fungen</center></h4>\n"; 
-                #print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; +                print "<h5><center>( <a href='$url11$n'>MX11</a>\n"; 
-                #print "<a href='$url12$n'>MX12</a>\n"; +                print "<a href='$url12$n'>MX12</a>\n"; 
-                #print "<a href='$url13$n'>MX13</a>\n"; +                print "<a href='$url13$n'>MX13</a>\n"; 
-                #print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; +                print "<a href='$url14$n'>MX14</a> )</center></h5>\n"; 
-                #print "<p><img src=\"$scriptname?${n}-c\" alt=\"mailgraph - dmarc checked\"/></p>\n";   +                print "<p><img src=\"$scriptname?${n}-c\" alt=\"mailgraph - dmarc checked\"/></p>\n";   
  
         }         }
Zeile 8323: Zeile 8364:
 </code> </code>
  
 +
 +=== CGI-Script für die ∑-Auswertung ===
 Mit allen Änderungen und Erweiterungen ergibt sich dann folgendes Gesamt-CGI-Script: Mit allen Änderungen und Erweiterungen ergibt sich dann folgendes Gesamt-CGI-Script:
    # vim /usr/share/mailgraph-ng/mx/mailgraph.cgi    # vim /usr/share/mailgraph-ng/mx/mailgraph.cgi
Zeile 9566: Zeile 9609:
 </file> </file>
  
 +==== Apache VHost anlegen ====
 +Damit wir bequem von unserem Browser aus, die aktuellen Graphiken abfragen können, bearbeiten wir entweder die aus dem RPM stammende Konfigurationsdatei oder legen wir nun einen passenden VHost an.
 +  # vim /etc/httpd/conf.d/vhosts.conf
 +<file apache /etc/httpd/conf.d/vhosts.conf>
 +#
 +# mailgraph.nausch.org
 +#
 +<VirtualHost *:80>
 + ServerAdmin webmaster@nausch.org
 + ServerName mailgraph.nausch.org
 + ServerAlias www.mailgraph.nausch.org
 + ServerPath /
 + DocumentRoot "/usr/share/mailgraph-ng/mx"
 + AddHandler cgi-script .cgi
 +
 + <Directory "/usr/share/mailgraph/mx">
 +            AllowOverride None
 +            Options +ExecCGI
 +            DirectoryIndex mailgraph.cgi
 +            require IP 10.0.
 + </Directory>
 + <Directory "/usr/share/mailgraph/mx11">
 +            AllowOverride None
 +            Options +ExecCGI
 +            DirectoryIndex mailgraph.cgi
 +            require IP 10.0.
 + </Directory>
 + <Directory "/usr/share/mailgraph/mx12">
 +            AllowOverride None
 +            Options +ExecCGI
 +            DirectoryIndex mailgraph.cgi
 +            require IP 10.0.
 + </Directory>
 + <Directory "/usr/share/mailgraph/mx13">
 +            AllowOverride None
 +            Options +ExecCGI
 +            DirectoryIndex mailgraph.cgi
 +            require IP 10.0.
 + </Directory
 + <Directory "/usr/share/mailgraph/mx14">
 +            AllowOverride None
 +            Options +ExecCGI
 +            DirectoryIndex mailgraph.cgi
 +            require IP 10.0.
 + </Directory
 +
 + ErrorLog logs/mailgraph_error.log
 + CustomLog logs/mailgraph_access.log combined
 +</VirtualHost>
 +
 +
 +</file>
 +
 +Bevor wir bei unserem Webserver eine Reload der Konfiguration vornehmen, testen wir unsere neue Konfigurationsdatei auf syntaktische Fehler. 
 +   # apachectl -t
 +
 +   Syntax OK
 +
 +Da keine Fehler aufgetreten sind, aktivieren wir die neue Konfiguration durch einen Reload des Webserver-Daemon.
 +   # systemctl reload postfix
 +
 +==== NGiNX vHost anlegen ====
 +Nutzen wir als Webserver **[[centos:web_c7:nginx_1|NGiNX]]** können wir auch hier schnell und einfach einen passenden vHOST anlegen.
 +  # vim /etc/nginx/conf.d/vhosts.conf
 +<file http /etc/nginx/conf.d/vhosts.conf>server {
 +        listen          80;
 +        server_name     mailgraph.nausch.org;
 +        access_log      /var/log/nginx/mailgraph_access.log;
 +        error_log       /var/log/nginx/mailgraph_errors.log;
 + 
 +        root /usr/share/mailgraph-ng/;
 +        index mailgraph.cgi;
 + 
 +       location ~ \.php {
 +                fastcgi_split_path_info ^(.+\.cgi)(/.+)$;
 +                fastcgi_index mailgraph.cgi;
 +                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 +                include fastcgi_params;
 +        }
 +}
 +</file>
 +
 +Den Parameter **fastcgi_pass** setzen wir im übrigen auf den Wert aus der Konfigurationsdatei //**/etc/php-fpm.d/www.conf**// des PHP FastCGI Process Manager-Daemon **php-fpm**.
 +
 +Haben wir die Konfigurationsdatei vervollständigt, prüfen wir diese noch auf syntaktische Fehler.
 +   # nginx -t
 +
 +   nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
 +   nginx: configuration file /etc/nginx/nginx.conf test is successful
 +
 +Somit können wir unsere Konfiguration nun noch aktivieren.
 +   # systemctl reload nginx
 +
 +==== Webaufruf ====
 +Rufen wir nun die definierte Webseite unserer Gesamtstatistikübersicht auf, erhalten wir nachfolgende Ansicht.
 +
 +{{ :centos:mail_c7:mailgraph-ng_summe.png?direct&800 |Bild: Mailgraph Statistiken (Summe mehrerer Einzelsysteme) }}
 +
 +Hier können wir nun gezielt einzelne Systeme auswählen, bzw. bei einer ausgewählten Detailstatistikseite zur Summenseite hin und her wechseln.
 ===== AWStats ===== ===== AWStats =====
 Auch mit Hilfe des Projektes/Paketes **AWStats** kann man das Maillog unseres Mailserver auswerten. Mit Hilfe zweier Perlscripte erstellen wir nun täglich einen Statusbericht über das was unserem MX widerfahren ist, und rufen später diese Information via Firefox/Konqueror ab. :) Auch mit Hilfe des Projektes/Paketes **AWStats** kann man das Maillog unseres Mailserver auswerten. Mit Hilfe zweier Perlscripte erstellen wir nun täglich einen Statusbericht über das was unserem MX widerfahren ist, und rufen später diese Information via Firefox/Konqueror ab. :)
Zeile 11417: Zeile 11559:
   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
- 
- 
- 
- 
  
  
  • centos/mail_c7/mta_13.1425480603.txt.gz
  • Zuletzt geändert: 04.03.2015 14:50.
  • von django