Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Vorhergehende Überarbeitung | |||
| — | centos:mail_c6:mta_11 [18.11.2024 19:12. ] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Mailserver - Logfileauswertungen unter CentOS 6.x ====== | ||
| + | Damit wir uns im laufenden Betrieb regelmäßigen über den aktuellen Status ein Bildmachen können, ohne dazu extra langwierig im Logfile unseres Mailservers herumzusuchen, | ||
| + | |||
| + | Im Detail wollen wir uns nun drei der Varianten genauer ansehen. | ||
| + |   - **[[centos: | ||
| + | - WEB-GUIs Graphisch sehr ansprechende Logfilezusammenfassung generieren und zum Abrufen via Browser anbieten | ||
| + |     - **[[centos: | ||
| + |     - **[[centos: | ||
| + |     - **[[centos: | ||
| + |     - **[[centos: | ||
| + |     - **[[centos: | ||
| + |   - **[[centos: | ||
| + | |||
| + | ===== pflogsumm ===== | ||
| + | Mit Hilfe dieses kleinen Perlscriptes können wir uns einen täglichen Statusbericht unseres Mailservers erstellen lassen und wissen so das was unserem MX widerfahren ist. :) Das Perlscript **pflogsumm** wertet hierzu das Logfile // | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Das Perlscript **pflogsumm** befindet sich unter CentOS 6.x im Paket **// | ||
| + | # yum install postfix-perl-scripts -y | ||
| + | |||
| + | Was uns bei der Installation dieses Paketes alles mitgebracht wurde, zeigt uns folgender Aufruf. | ||
| + | # rpm -qil postfix-perl-scripts | ||
| + | < | ||
| + | Version  | ||
| + | Release  | ||
| + | Install Date: Sun 03 Jun 2012 07:18:19 PM CEST Build Host: c6b18n3.bsys.dev.centos.org | ||
| + | Group       : Applications/ | ||
| + | Size        : 106404  | ||
| + | Signature  | ||
| + | Packager  | ||
| + | URL         : http:// | ||
| + | Summary  | ||
| + | Description : | ||
| + | This package contains perl scripts pflogsumm and qshape. | ||
| + | |||
| + | Pflogsumm is a log analyzer/ | ||
| + | designed to provide an over-view of Postfix activity. Pflogsumm | ||
| + | generates summaries and, in some cases, detailed reports of mail | ||
| + | server traffic volumes, rejected and bounced email, and server | ||
| + | warnings, errors and panics. | ||
| + | |||
| + | qshape prints Postfix queue domain and age distribution. | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ==== Optionen beim Programmaufruf==== | ||
| + | Hinweise zur Konfiguration oder besser gesagt über die Optionen beim Aufruf des Programms zeigt ein Blick in die Manpage von **pflogsumm**. | ||
| + | |||
| + | < | ||
| + | |||
| + | NAME | ||
| + |         | ||
| + | |||
| + |         | ||
| + | |||
| + | SYNOPSIS | ||
| + |             | ||
| + |                 | ||
| + |                 | ||
| + |                 | ||
| + |                 | ||
| + |                 | ||
| + |                 | ||
| + | |||
| + |             | ||
| + | |||
| + |            If no file(s) specified, reads from stdin.  | ||
| + | |||
| + | DESCRIPTION | ||
| + |             | ||
| + |             | ||
| + |             | ||
| + |             | ||
| + | |||
| + |             | ||
| + | mail server traffic volumes, rejected and bounced email, and server | ||
| + |             | ||
| + | |||
| + | OPTIONS | ||
| + |            -d today        | ||
| + |            -d yesterday  | ||
| + | |||
| + |             | ||
| + | |||
| + |                           Emit detailed reports.  | ||
| + | only a per-message report, sorted by sender domain, | ||
| + |                           then user-in-domain, | ||
| + | |||
| + | WARNING: the data built to generate this report can | ||
| + | quickly consume very large amounts of memory if a | ||
| + | lot of log entries are processed! | ||
| + | |||
| + |            -h < | ||
| + | |||
| + | 0 = none. | ||
| + | |||
| + |                           See also: " | ||
| + | report-limiting options. | ||
| + | |||
| + |             | ||
| + | |||
| + |                           (By happy coincidence, | ||
| + | being as it requires a numeric argument :-). Yeah, I | ||
| + | know: lame.) | ||
| + | |||
| + | -i | ||
| + |             | ||
| + | manner. | ||
| + | |||
| + | Normally pflogsumm lower-cases only the host and | ||
| + |                           domain parts, leaving the user part alone.  | ||
| + | option causes the entire email address to be lower- | ||
| + | cased. | ||
| + | |||
| + |             | ||
| + | |||
| + |                           For summaries that contain date or time information, | ||
| + | use ISO 8601 standard formats (CCYY-MM-DD and HH:MM), | ||
| + |                           rather than "Mon DD CCYY" and " | ||
| + | |||
| + |             | ||
| + |             | ||
| + | |||
| + | This is for use when you have a mix of Internet-style | ||
| + | domain addresses and UUCP-style bang-paths in the log. | ||
| + | Upstream UUCP feeds sometimes mung Internet domain | ||
| + |                           style address into bang-paths.  | ||
| + |                           sometimes undo the " | ||
| + |                           " | ||
| + |                           host upstream and " | ||
| + | originated) will get converted to | ||
| + |                           " | ||
| + | extended detail report (-e), to help ensure that by- | ||
| + |                             | ||
| + | |||
| + |             | ||
| + | |||
| + |                           Merely a convenience feature.  | ||
| + |                           is in $PATH.  | ||
| + | if desired.) | ||
| + | |||
| + |             | ||
| + |             | ||
| + |             | ||
| + | |||
| + | Suppresses the printing of the following detailed | ||
| + |                           reports, respectively: | ||
| + | |||
| + |                                 | ||
| + |                                 | ||
| + |                                 | ||
| + | |||
| + |                           See also: " | ||
| + | options. | ||
| + | |||
| + |             | ||
| + | |||
| + |                            Do not emit report on " | ||
| + | |||
| + |                             | ||
| + | The message may be delivered long-enough after the | ||
| + |                             | ||
| + | the log(s) processed by a particular run of | ||
| + |                             | ||
| + |                             | ||
| + |                             | ||
| + | size data." | ||
| + | |||
| + |             | ||
| + | |||
| + | On a busy mail server, say at an ISP, SMTPD warnings | ||
| + |                            can result in a rather sizeable report.  | ||
| + | turns reporting them off. | ||
| + | |||
| + |             | ||
| + | |||
| + |                           Emit " | ||
| + |                           etc.) before " | ||
| + | |||
| + |             | ||
| + | For those reject reports that list IP addresses or | ||
| + | host/domain names: append the email from address to | ||
| + |                           each listing.  | ||
| + |                           SMTP command pipelining" | ||
| + | |||
| + |             | ||
| + | |||
| + |                           note: headings for warning, fatal, and " | ||
| + | messages will always be printed. | ||
| + | |||
| + |             | ||
| + | |||
| + | Generate smtpd connection statistics. | ||
| + | |||
| + |                           The " | ||
| + |                           reports.  | ||
| + | are daily averages (reflected in the report heading). | ||
| + | |||
| + |             | ||
| + | |||
| + | Set syslog_name to look for for Postfix log entries. | ||
| + | |||
| + | By default, pflogsumm looks for entries in logfiles | ||
| + |                           with a syslog name of " | ||
| + |                           If you’ve set a non-default " | ||
| + |                           in your Postfix configuration, | ||
| + | tell pflogsumm what that is. | ||
| + | |||
| + | See the discussion about the use of this option under | ||
| + |                           " | ||
| + | |||
| + |            -u < | ||
| + | |||
| + |                           See also: " | ||
| + | report-limiting options. | ||
| + | |||
| + |             | ||
| + | |||
| + | For the message deferral, bounce and reject summaries: | ||
| + |                           display the full " | ||
| + | |||
| + | Note: this can result in quite long lines in the report. | ||
| + | |||
| + |             | ||
| + |             | ||
| + |                           " | ||
| + | to | ||
| + |                              " | ||
| + | |||
| + |                            In other words: replace the numeric value with " | ||
| + | |||
| + |                           By specifying the optional " | ||
| + |                           munging is more " | ||
| + | to something like: | ||
| + | |||
| + |                                " | ||
| + | |||
| + | Actually: specifying anything less than 2 does the | ||
| + |                           " | ||
| + |                           in the more " | ||
| + | |||
| + |                           See " | ||
| + | |||
| + |             | ||
| + | |||
| + |             | ||
| + | data in columns that that might otherwise be blank. | ||
| + | |||
| + | RETURN VALUE | ||
| + |             | ||
| + | |||
| + | ERRORS | ||
| + | Error messages are emitted to stderr. | ||
| + | |||
| + | EXAMPLES | ||
| + |             | ||
| + | |||
| + |                 | ||
| + | |||
| + | A report of prior week’s activities (after logs rotated): | ||
| + | |||
| + |                 | ||
| + | |||
| + |             | ||
| + | |||
| + |                 | ||
| + | |||
| + |             | ||
| + | at 10 minutes after midnight. | ||
| + | |||
| + |                10 0 * * * / | ||
| + |                 | ||
| + | |||
| + |             | ||
| + | (This example assumes one rotates ones mail logs weekly, some time | ||
| + |             | ||
| + | |||
| + |                10 4 * * 0   / | ||
| + |                 | ||
| + | |||
| + | The two crontab examples, above, must actually be a single line | ||
| + |             | ||
| + |             | ||
| + | |||
| + | SEE ALSO | ||
| + | The pflogsumm FAQ: pflogsumm-faq.txt. | ||
| + | |||
| + | NOTES | ||
| + |             | ||
| + |             | ||
| + |             | ||
| + | |||
| + |             | ||
| + |             | ||
| + |             | ||
| + | |||
| + |            For display purposes: integer values are munged into " | ||
| + |            " | ||
| + |             | ||
| + | which to do this--my thinking being 512x was the largest number | ||
| + | (of digits) that most folks can comfortably grok at-a-glance. | ||
| + |            These are " | ||
| + | can easily change all of this with some constants near the | ||
| + |             | ||
| + | |||
| + |            " | ||
| + |             | ||
| + | daily averages (reflected in the report headings). | ||
| + | |||
| + |             | ||
| + |             | ||
| + |             | ||
| + | |||
| + | Verp munging may not always result in correct address and | ||
| + |             | ||
| + | |||
| + |            Verp munging is always in a state of experimentation.  | ||
| + | of this option may result in inaccurate statistics with regards | ||
| + |            to the " | ||
| + | |||
| + |             | ||
| + |             | ||
| + |            run with " | ||
| + |            may not be sorted correctly by-domain-by-user.  | ||
| + |             | ||
| + | |||
| + |            The " | ||
| + |             | ||
| + |            " | ||
| + | |||
| + |                 | ||
| + | |||
| + |                     | ||
| + | |||
| + |            There are some issues with the use of --syslog_name.  | ||
| + | that, even with $syslog_name set, Postfix will sometimes still log | ||
| + |             | ||
| + |            / | ||
| + | |||
| + | # Beware: a non-default syslog_name setting takes effect only | ||
| + | # after process initialization. Some initialization errors will be | ||
| + | # logged with the default name, especially errors while parsing | ||
| + | # the command line and errors while accessing the Postfix main.cf | ||
| + | # configuration file. | ||
| + | |||
| + |            As a consequence, | ||
| + | as well as whatever is supplied for syslog_name. | ||
| + | |||
| + | Where this becomes an issue is where people are running two or more | ||
| + |             | ||
| + | |||
| + |                . Neither instance may use the default " | ||
| + |                   | ||
| + | |||
| + | . Log entries that fall victim to what’s described in | ||
| + |                   | ||
| + |                   | ||
| + | log entries will show up in each report. | ||
| + | |||
| + | The Pflogsumm Home Page is at: | ||
| + | |||
| + |                 | ||
| + | |||
| + | REQUIREMENTS | ||
| + |            For certain options (e.g.: --smtpd_stats), | ||
| + |             | ||
| + |             | ||
| + | |||
| + |             | ||
| + |            As of version 19990413-02, | ||
| + |             | ||
| + | |||
| + | LICENSE | ||
| + | This program is free software; you can redistribute it and/or | ||
| + |             | ||
| + | as published by the Free Software Foundation; either version 2 | ||
| + | of the License, or (at your option) any later version. | ||
| + | |||
| + | This program is distributed in the hope that it will be useful, | ||
| + | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| + |             | ||
| + | GNU General Public License for more details. | ||
| + | |||
| + | You may have received a copy of the GNU General Public License | ||
| + | along with this program; if not, write to the Free Software | ||
| + |             | ||
| + | USA. | ||
| + | |||
| + | An on-line copy of the GNU General Public License can be found | ||
| + |             | ||
| + | |||
| + | 1.1.1                              | ||
| + | </ | ||
| + | Mit der Option **-help** werden die entsprechenden Optionen ebenfalls in Kurzform angezeigt. | ||
| + | # pflogsumm -help | ||
| + | < | ||
| + |         | ||
| + |         | ||
| + |         | ||
| + |         | ||
| + |         | ||
| + |         | ||
| + | |||
| + |         | ||
| + | </ | ||
| + | ==== manueller Programmaufruf ==== | ||
| + | Wollen wir uns einen Bericht des heutigen Tages ansehen, so generieren wir diesen on-the-fly mit: | ||
| + |   # / | ||
| + | Interessiert uns was gestern los war, so lautet der Aufgruf ganz einfach: | ||
| + |   # / | ||
| + | |||
| + | ==== automatischer Programmaufruf ==== | ||
| + | Für die tägliche Erstellung unserer Mailserverstatistik bemühen wir nun ganz einfach unseres cron-deamon. | ||
| + | |||
| + | Hierzu legen wir mit dem Editor unserer Wahl eine betreffende Konfigurationsdatei an, bzw. ergänzen die bereits vorhandene Datei. | ||
| + |   # vim / | ||
| + | |||
| + | < | ||
| + | #täglicher Statusbericht unseres Mailservers postfix | ||
| + | 10 0 * * * root / | ||
| + | </ | ||
| + | |||
| + | Täglich um 00:10 Uhr wird die Statistik des letzten Tages erstellt und mittels **mailx** als eMail an den postmaster verschickt. | ||
| + | < | ||
| + | From: root < | ||
| + | To: postmaster@nausch.org | ||
| + | Subject: ‘uname -n‘ daily mail stats | ||
| + | |||
| + | Postfix log summaries for Oct 12 | ||
| + | |||
| + | Grand Totals | ||
| + | ------------ | ||
| + | messages | ||
| + | |||
| + |       | ||
| + |       | ||
| + |       0    | ||
| + |       0    | ||
| + |       0    | ||
| + |     339    | ||
| + |       0    | ||
| + | 0 held | ||
| + |       0    | ||
| + | |||
| + |   | ||
| + |   | ||
| + |       | ||
| + |       | ||
| + |       4    | ||
| + |       1    | ||
| + | |||
| + | |||
| + | Per-Hour Traffic Summary | ||
| + |     time          received  | ||
| + | -------------------------------------------------------------------- | ||
| + |     0000-0100  | ||
| + |     0100-0200  | ||
| + |     0200-0300  | ||
| + |     0300-0400  | ||
| + |     0400-0500  | ||
| + |     0500-0600  | ||
| + |     0600-0700  | ||
| + |     0700-0800  | ||
| + |     0800-0900  | ||
| + |     0900-1000  | ||
| + |     1000-1100  | ||
| + |     1100-1200  | ||
| + |     1200-1300  | ||
| + |     1300-1400  | ||
| + |     1400-1500  | ||
| + |     1500-1600  | ||
| + |     1600-1700  | ||
| + |     1700-1800  | ||
| + |     1800-1900  | ||
| + |     1900-2000  | ||
| + |     2000-2100  | ||
| + |     2100-2200  | ||
| + |     2200-2300  | ||
| + |     2300-2400  | ||
| + | |||
| + | Host/Domain Summary: Message Delivery  | ||
| + |  sent cnt  bytes    | ||
| + |   | ||
| + |       | ||
| + | |||
| + | ... | ||
| + | |||
| + | ... | ||
| + | |||
| + | Fatal Errors: none | ||
| + | |||
| + | Panics: none | ||
| + | |||
| + | Master daemon messages | ||
| + | ---------------------- | ||
| + |       1    | ||
| + | </ | ||
| + | |||
| + | ===== mailgraph ===== | ||
| + | Eine ansprechende graphische Übersicht kann mittels [[http:// | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Mit Hilfe von **yum** holen wir uns als erstes das benötigte Paket auf unser System. | ||
| + | # yum install mailgraph -y | ||
| + | Den Inhalt des Paketes inspizieren wir bei Bedarf mit folgendem Aufruf. | ||
| + | # rpm -qil mailgraph | ||
| + | < | ||
| + | Version  | ||
| + | Release  | ||
| + | Install Date: Tue 03 Jul 2012 03:04:16 PM CEST Build Host: ppc02.phx2.fedoraproject.org | ||
| + | Group       : System Environment/ | ||
| + | Size : 68312 License: GPL+ | ||
| + | Signature  | ||
| + | Packager  | ||
| + | URL         : http:// | ||
| + | Summary  | ||
| + | Description : | ||
| + | Mailgraph is a very simple mail statistics RRDtool frontend for Postfix and | ||
| + | Sendmail that produces daily, weekly, monthly and yearly graphs of | ||
| + | received/ | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | ==== Konfiguration ==== | ||
| + | Die Konfiguration von mailgraph selbst gestaltet sich sehr einfach. Über die Konfigurationsdatei // | ||
| + |    # vim / | ||
| + | |||
| + | <file hash / | ||
| + | PRIORITY=-19 | ||
| + | OPTIONS=--ignore-localhost | ||
| + | </ | ||
| + | |||
| + | Will man die Sprache bei der Webseite, oder die Farben anpassen, so nimmt man die Änderungen direkt im CGI-Script vor. | ||
| + |    # vim / | ||
| + | <file perl / | ||
| + | |||
| + | # mailgraph -- postfix mail traffic statistics | ||
| + | # copyright (c) 2000-2007 ETH Zurich | ||
| + | # copyright (c) 2000-2007 David Schweikert < | ||
| + | # released under the GNU General Public License | ||
| + | |||
| + | use RRDs; | ||
| + | use POSIX qw(uname); | ||
| + | |||
| + | my $VERSION = " | ||
| + | |||
| + | my $host = (POSIX:: | ||
| + | my $scriptname = ' | ||
| + | my $xpoints = 540; | ||
| + | my $points_per_sample = 3; | ||
| + | my $ypoints = 160; | ||
| + | my $ypoints_err = 96; | ||
| + | my $rrd = '/ | ||
| + | my $rrd_virus = '/ | ||
| + | my $tmp_dir = '/ | ||
| + | |||
| + | my @graphs = ( | ||
| + | 	{ title => ' | ||
| + | 	{ title => ' | ||
| + | 	{ title => ' | ||
| + | 	{ title => ' | ||
| + | ); | ||
| + | |||
| + | my %color = ( | ||
| + | 	sent     => ' | ||
| + | 	received => ' | ||
| + | 	rejected => ' | ||
| + | 	bounced  | ||
| + | 	virus  | ||
| + | 	spam     => ' | ||
| + | ); | ||
| + | |||
| + | sub rrd_graph(@) | ||
| + | { | ||
| + | my ($range, $file, $ypoints, @rrdargs) = @_; | ||
| + | 	my $step = $range*$points_per_sample/ | ||
| + | # choose carefully the end otherwise rrd will maybe pick the wrong RRA: | ||
| + | my $end = time; $end -= $end % $step; | ||
| + | 	my $date = localtime(time); | ||
| + | 	$date =~ s|:|\\:|g unless $RRDs:: | ||
| + | |||
| + | 	my ($graphret, | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		$RRDs:: | ||
| + | |||
| + | @rrdargs, | ||
| + | |||
| + | 		' | ||
| + | ); | ||
| + | |||
| + | 	my $ERR=RRDs:: | ||
| + | 	die " | ||
| + | } | ||
| + | |||
| + | sub graph($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + | 	my $step = $range*$points_per_sample/ | ||
| + | 	rrd_graph($range, | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | ); | ||
| + | } | ||
| + | |||
| + | sub graph_err($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + | 	my $step = $range*$points_per_sample/ | ||
| + | 	rrd_graph($range, | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | ); | ||
| + | } | ||
| + | |||
| + | sub print_html() | ||
| + | { | ||
| + | 	print " | ||
| + | |||
| + | 	print << | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | <meta http-equiv=" | ||
| + | < | ||
| + | <meta http-equiv=" | ||
| + | <meta http-equiv=" | ||
| + | <link rel=" | ||
| + | </ | ||
| + | < | ||
| + | HEADER | ||
| + | |||
| + | 	print "< | ||
| + | |||
| + | 	print "< | ||
| + | 	for my $n (0..$# | ||
| + | 		print "  | ||
| + | } | ||
| + | 	print "</ | ||
| + | |||
| + | 	for my $n (0..$# | ||
| + | 		print "< | ||
| + | 		print "< | ||
| + | 		print "< | ||
| + | } | ||
| + | |||
| + | 	print << | ||
| + | <hr/> | ||
| + | < | ||
| + | <a href=" | ||
| + | by <a href=" | ||
| + | <td align=" | ||
| + | <a href=" | ||
| + | </ | ||
| + | </ | ||
| + | FOOTER | ||
| + | } | ||
| + | |||
| + | sub send_image($) | ||
| + | { | ||
| + | my ($file)= @_; | ||
| + | |||
| + | -r $file or do { | ||
| + | 		print " | ||
| + | exit 1; | ||
| + | }; | ||
| + | |||
| + | 	print " | ||
| + | 	print " | ||
| + | 	print " | ||
| + | open(IMG, $file) or die; | ||
| + | my $data; | ||
| + | 	print $data while read(IMG, $data, 16384)> | ||
| + | } | ||
| + | |||
| + | sub main() | ||
| + | { | ||
| + | 	my $uri = $ENV{REQUEST_URI} || ''; | ||
| + | 	$uri =~ s/ | ||
| + | $uri =~ s/\//,/g; | ||
| + | 	$uri =~ s/ | ||
| + | mkdir $tmp_dir, 0777 unless -d $tmp_dir; | ||
| + | 	mkdir " | ||
| + | |||
| + | 	my $img = $ENV{QUERY_STRING}; | ||
| + | if(defined $img and $img =~ /\S/) { | ||
| + | 		if($img =~ / | ||
| + | 			my $file = " | ||
| + | 			graph($graphs[$1]{seconds}, | ||
| + | 			send_image($file); | ||
| + | } | ||
| + | 		elsif($img =~ / | ||
| + | 			my $file = " | ||
| + | 			graph_err($graphs[$1]{seconds}, | ||
| + | 			send_image($file); | ||
| + | } | ||
| + | else { | ||
| + | 			die " | ||
| + | } | ||
| + | } | ||
| + | else { | ||
| + | 		print_html; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main; | ||
| + | </ | ||
| + | |||
| + | ==== Apache VHost anlegen ==== | ||
| + | Damit wir bequem von unserem Browser aus, die aktuellen Graphiken abfragen können, legen wir nun einen passenden VHost an. | ||
| + |   # vim / | ||
| + | <file apache / | ||
| + | # | ||
| + | # mail-graph.nausch.org | ||
| + | # | ||
| + | < | ||
| + | ServerAdmin webmaster@nausch.org | ||
| + | ServerName mail-graph.nausch.org | ||
| + | ServerAlias www.mail-graph.nausch.org | ||
| + | ServerPath / | ||
| + | 	DocumentRoot "/ | ||
| + | AddHandler cgi-script .cgi | ||
| + | |||
| + | 	< | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI | ||
| + | DirectoryIndex mailgraph.cgi | ||
| + | Order deny,allow | ||
| + | Deny from all | ||
| + | Allow from 127.0.0.1 | ||
| + | Allow from 10.0.0.0/24 | ||
| + | 		Allow from 10.0.10.0/ | ||
| + | 	</ | ||
| + | 	ErrorLog logs/ | ||
| + | 	CustomLog logs/ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | Anschließend starten wir unseren Webserver einmal durch, damit er den weiteren VHost auch verwenden kann. | ||
| + | # service postfix restart | ||
| + | |||
| + |   httpd beenden:  | ||
| + |   httpd starten:  | ||
| + | |||
| + | ==== Programmaufruf ==== | ||
| + | === manueller Start des Dämon === | ||
| + | Damit das Mail-Logfile forlaufend ausgelesen wird, starten wir nun noch den Dämon mit Hilfe des mitgelieferten Init-Scriptes // | ||
| + | # service mailgraph start | ||
| + | |||
| + |     | ||
| + | |||
| + | === automatischer Start des Dämon === | ||
| + | Damit beim Systemstart der mailgraph-Dämon richtig gestartet wird, setzen wir die nötigen symlinks automatisch mit: | ||
| + | # chkconfig mailgraph on | ||
| + | Das Ganze überprüfen wir dann noch mittels | ||
| + | # chkconfig --list | grep mailgraph | ||
| + | |||
| + |     | ||
| + | |||
| + | ==== Webaufruf ==== | ||
| + | Über unseren [[https:// | ||
| + | |||
| + | {{ : | ||
| + | ===== queuegraph ===== | ||
| + | Möchte man einen graphischen Überblick über die Queues haben, so greifen wir auf das Programm [[http:// | ||
| + | |||
| + | Das aktuelle Programmpaket **queuegraph** installieren am einfachsten aus dem  [[centos: | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Mit Hilfe von **yum** holen wir uns als erstes das benötigte Paket auf unser System. | ||
| + | # yum install queuegraph -y | ||
| + | Den Inhalt des Paketes inspizieren wir bei Bedarf mit folgendem Aufruf. | ||
| + | # rpm -qil queuegraph | ||
| + | |||
| + | < | ||
| + | Version  | ||
| + | Release  | ||
| + | Install Date: Sat 23 Feb 2013 07:01:56 PM CET Build Host: x86-02.phx2.fedoraproject.org | ||
| + | Group       : System Environment/ | ||
| + | Size        : 6271                              | ||
| + | Signature  | ||
| + | Packager  | ||
| + | URL         : http:// | ||
| + | Summary  | ||
| + | Description : | ||
| + | Queuegraph is a very simple mail statistics RRDtool frontend for Postfix that | ||
| + | produces daily, weekly, monthly and yearly graphs of Postfix' | ||
| + | deferred, incoming and bounce queues. | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | ==== Konfiguration ==== | ||
| + | Die Konfiguration von queuegraph selbst gestaltet sich sehr einfach, da es gar nichts großartrig zu konfigurieren gibt! | ||
| + | |||
| + | Will man die Sprache bei der Webseite, oder die Farben anpassen, so nimmt man die Änderungen direkt im CGI-Script vor. | ||
| + |    # vim / | ||
| + | <file perl / | ||
| + | |||
| + | # queuegraph -- a postfix queue statistics rrdtool frontend | ||
| + | # based on mailgraph, which is | ||
| + | # copyright (c) 2000-2002 David Schweikert < | ||
| + | # released under the GNU General Public License | ||
| + | |||
| + | use RRDs; | ||
| + | use POSIX qw(uname); | ||
| + | |||
| + | my $VERSION = " | ||
| + | |||
| + | my $host = (POSIX:: | ||
| + | my $scriptname = ' | ||
| + | my $xpoints = 800; | ||
| + | my $points_per_sample = 3; | ||
| + | my $ypoints = 160; | ||
| + | my $ypoints_err = 80; | ||
| + | my $rrd = '/ | ||
| + | my $tmp_dir = '/ | ||
| + | my $rrdtool_1_0 = ($RRDs:: | ||
| + | |||
| + | my @graphs = ( | ||
| + | 	{ title => 'Day Graph',  | ||
| + | 	{ title => 'Week Graph',  | ||
| + | 	{ title => 'Month Graph', | ||
| + | 	{ title => 'Year Graph',  | ||
| + | ); | ||
| + | |||
| + | my %color = ( | ||
| + | 	sent     => ' | ||
| + | 	received => ' | ||
| + | 	rejected => ' | ||
| + | 	bounced  | ||
| + | 	virus  | ||
| + | 	spam     => ' | ||
| + | ); | ||
| + | |||
| + | sub graph($$$) | ||
| + | { | ||
| + | my $range = shift; | ||
| + | my $file = shift; | ||
| + | my $title = shift; | ||
| + | 	my $step = $range*$points_per_sample/ | ||
| + | 	my $date = localtime(time); | ||
| + | 	$date =~ s|:|\\:|g unless $rrdtool_1_0; | ||
| + | |||
| + | 	my ($graphret, | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + |   | ||
| + |   | ||
| + | ), | ||
| + | |||
| + |         	" | ||
| + |         	" | ||
| + | |||
| + |         	' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + |         	' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		' | ||
| + |         	' | ||
| + |   | ||
| + | ); | ||
| + | 	my $ERR=RRDs:: | ||
| + | 	die " | ||
| + | } | ||
| + | |||
| + | sub print_html() | ||
| + | { | ||
| + | 	print " | ||
| + | |||
| + | 	print << | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | <BODY BGCOLOR="# | ||
| + | HEADER | ||
| + | |||
| + | 	print "< | ||
| + | 	for my $n (0..$# | ||
| + | 		print "< | ||
| + | 		print "< | ||
| + | } | ||
| + | |||
| + | 	print << | ||
| + | <table border=" | ||
| + | <A href=" | ||
| + | by <A href=" | ||
| + | based on <A href=" | ||
| + | by <A href=" | ||
| + | <td ALIGN=" | ||
| + | <a HREF=" | ||
| + | </ | ||
| + | </ | ||
| + | FOOTER | ||
| + | } | ||
| + | |||
| + | sub send_image($) | ||
| + | { | ||
| + | my $file = shift; | ||
| + | -r $file or do { | ||
| + | 		print " | ||
| + | exit 1; | ||
| + | }; | ||
| + | |||
| + | 	print " | ||
| + | 	print " | ||
| + | 	print " | ||
| + | open(IMG, $file) or die; | ||
| + | my $data; | ||
| + | print $data while read IMG, $data, 1; | ||
| + | } | ||
| + | |||
| + | sub main() | ||
| + | { | ||
| + | if($ENV{PATH_INFO}) { | ||
| + | 		my $uri = $ENV{REQUEST_URI}; | ||
| + | 		$uri =~ s/ | ||
| + | $uri =~ s/\//,/g; | ||
| + | 		$uri =~ s/ | ||
| + | 		mkdir " | ||
| + | 		my $file = " | ||
| + | 		if($ENV{PATH_INFO} =~ / | ||
| + | 			graph($graphs[$1]{seconds}, | ||
| + | } | ||
| + | else { | ||
| + | 			print " | ||
| + | exit 1; | ||
| + | } | ||
| + | 		send_image($file); | ||
| + | } | ||
| + | else { | ||
| + | 		print_html; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main; | ||
| + | </ | ||
| + | ==== Apache VHost anlegen ==== | ||
| + | Damit wir bequem von unserem Browser aus, die aktuellen Graphiken abfragen können, legen wir nun einen passenden VHost an. | ||
| + |   # vim / | ||
| + | <file apache / | ||
| + | # | ||
| + | # queue-graph.nausch.org | ||
| + | # | ||
| + | < | ||
| + | ServerAdmin webmaster@nausch.org | ||
| + | ServerName queue-graph.nausch.org | ||
| + | ServerAlias www.queue-graph.nausch.org | ||
| + | ServerPath / | ||
| + | 	DocumentRoot "/ | ||
| + | AddHandler cgi-script .cgi | ||
| + | |||
| + | 	< | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI | ||
| + | DirectoryIndex queuegraph.cgi | ||
| + | Order deny,allow | ||
| + | Deny from all | ||
| + | Allow from 127.0.0.1 | ||
| + | Allow from 10.0.0.0/24 | ||
| + | 		Allow from 10.0.10.0/ | ||
| + | 	</ | ||
| + | 	ErrorLog logs/ | ||
| + | 	CustomLog logs/ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | Anschließend starten wir unseren Webserver einmal durch, damit er den weiteren VHost auch verwenden kann. | ||
| + | # service postfix restart | ||
| + | |||
| + |   httpd beenden:  | ||
| + |   httpd starten:  | ||
| + | |||
| + | Alternativ dazu können wir natürlich auch die mitgelieferte Apache-Datei // | ||
| + | |||
| + | <file http / | ||
| + | # Queuegraph: An postfix/ | ||
| + | # | ||
| + | Alias / | ||
| + | |||
| + | AddHandler cgi-script .cgi | ||
| + | |||
| + | < | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI | ||
| + | DirectoryIndex queuegraph.cgi | ||
| + | |||
| + | Order Deny,Allow | ||
| + | Deny from all | ||
| + | Allow from 127.0.0.1 | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Programmaufruf ==== | ||
| + | Die automatische Befüllung der **rrd**-files übernimmt ein cronjob, der jede Minute das Script **queuegraph-rrd.sh** startet. | ||
| + |    # cat / | ||
| + | |||
| + | <file bash / | ||
| + | # | ||
| + | # This will run every one minute | ||
| + | * * * * * root / | ||
| + | </ | ||
| + | |||
| + |    # less  / | ||
| + | <file bash  / | ||
| + | |||
| + | # output the number of messages in the incoming, active, and deferred | ||
| + | # queues of postfix one per line suitable for use with snmpd/ | ||
| + | # | ||
| + | # 2003/01/24 Mike Saunders <method at method DOT cx> | ||
| + | #            mailqsize was originally written by Vivek Khera.  | ||
| + | # make it update an rrd. | ||
| + | # 2003/04/14 Ralf Hildebrandt < | ||
| + | # I bundled this with a modified mailgraph | ||
| + | # 2007/07/28 Ralf Hildebrandt < | ||
| + | #            find rrdtool using " | ||
| + | |||
| + | # change this to the location of rrdtool | ||
| + | RRDTOOL=`which rrdtool` | ||
| + | |||
| + | # change this to the location you want to store the rrd | ||
| + | RRDFILE=/ | ||
| + | |||
| + | if test ! -x $RRDTOOL ; then | ||
| + | 	echo " | ||
| + | exit | ||
| + | fi | ||
| + | |||
| + | if test ! -f $RRDFILE ; then | ||
| + | 	echo " | ||
| + | |||
| + | $RRDTOOL create $RRDFILE --step 60 \ | ||
| + | 		DS: | ||
| + | 		DS: | ||
| + | 		RRA: | ||
| + | 		RRA: | ||
| + | 		RRA: | ||
| + | 		RRA: | ||
| + | 		RRA: | ||
| + | 		RRA: | ||
| + | fi | ||
| + | |||
| + | #set -x | ||
| + | qdir=`/ | ||
| + | active=`find $qdir/ | ||
| + | deferred=`find $qdir/ | ||
| + | #printf " | ||
| + | |||
| + | $RRDTOOL update $RRDFILE " | ||
| + | </ | ||
| + | |||
| + | ==== Webaufruf ==== | ||
| + | Über unseren [[https:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | ===== greygraph ===== | ||
| + | Möchte man einen graphischen Überblick über das Verhalten rund um unseren Greylisting-Daemon **postgrey** haben, dann greifen wir auf das Programm [[http:// | ||
| + | |||
| + | Das uns hierzu (Stand Februar 2013) noch kein RPM für CentOS 6.x zur Verfügung steht, müssen wir hier ein wenig Hand anlegen. | ||
| + | |||
| + | ==== Download ==== | ||
| + | Als erstes holen wir uns das [[http:// | ||
| + | |||
| + | Hierzu wechseln wir erst einmal in unser lokales Installationsverzeichnis. | ||
| + |    # cd / | ||
| + | |||
| + | Dann laden wir uns das Paket herunter. | ||
| + |    # wget http:// | ||
| + | |||
| + | |||
| + | ==== Installation ==== | ||
| + | Nun entpacken wir das heruntergeladene **tar.gz**-Archiv. | ||
| + | # tar xfv greygraph_r0.9.4.tar.gz | ||
| + | |||
| + | Als Ergebnis haben wir dann folgendes auf die Platte bekommen. | ||
| + | < | ||
| + | ├── etc | ||
| + | │ ├── default | ||
| + | │ │ └── greygraph | ||
| + | │ └── init.d | ||
| + | │    | ||
| + | ├── README-greygraph | ||
| + | ├── usr | ||
| + | │ ├── lib | ||
| + | │ │ └── cgi-bin | ||
| + | │   │    | ||
| + | │ └── sbin | ||
| + | │    | ||
| + | └── var | ||
| + | ├── cache | ||
| + | │ └── greygraph | ||
| + | ├── lib | ||
| + | │ └── greygraph | ||
| + | └── www | ||
| + | └── css | ||
| + | └── greygraph.css | ||
| + | </ | ||
| + | |||
| + | |||
| + | In der Datei **README-greygraph** finden wir ein paar Informationen, | ||
| + | # less README-greygraph | ||
| + | < | ||
| + | |||
| + | postgrey/ | ||
| + | ================================================= | ||
| + | |||
| + | Die Installation auf Debian/ | ||
| + | |||
| + | mkdir -p / | ||
| + | # Das Verzeichnis / | ||
| + | chgrp www-data / | ||
| + | chmod g+w / | ||
| + | |||
| + | # Evtl. anpassen der Konfiguration | ||
| + | vi / | ||
| + | # evtl anpassen der Pfade im cgi script: | ||
| + | # vi / | ||
| + | |||
| + | # starten der Datensammlung | ||
| + | update-rc.d greygraph defaults | ||
| + | / | ||
| + | |||
| + | mkdir -p / | ||
| + | # das Verzeichnis / | ||
| + | # welche von dem Systemtask in / | ||
| + | |||
| + | # Jetzt muss nur noch der Browser Aufruf erfolgen mit: | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | |||
| + | Fertig! | ||
| + | </ | ||
| + | |||
| + | Wir werden daher nun als erstes die notwendigen Verzeichnissse anlegen, deren Rechte anpassen, Teile des entpackten Archivs an Ort und Stelle verschieben und die noch fehlenden Konfigurationsdateien hinterschieben.  | ||
| + | |||
| + |   - **Verzeichnisse anlegen und Rechte anpassen**: \\ < | ||
| + |   - **vorhandene und nutzbare Dateien kopieren**: \\ < | ||
| + |   - **Dateien anpassen**: \\ < | ||
| + | MAIL_LOG=/ | ||
| + | IGNORE_LOCALHOST=false | ||
| + | RRD_DIR=/ | ||
| + | </ | ||
| + |   - **Startscript für CentOS anlegen**: \\ Damit der Daemondie relevanten Daten aus dem Maillog in die RRD-Datenbank automatisch schreiben kann, benötigen wir nun noch ein passendes Startscript. Dieses legen wir nun an.< | ||
| + | # | ||
| + | # Startup script for the greygraph service | ||
| + | # | ||
| + | # chkconfig: - 82 28 | ||
| + | # description: | ||
| + | # processname: | ||
| + | # pidfile: / | ||
| + | # config:  | ||
| + | ### BEGIN INIT INFO | ||
| + | # Provides:  | ||
| + | # Required-Start:  | ||
| + | # Should-Start: | ||
| + | # Required-Stop: | ||
| + | # Default-Stop:  | ||
| + | # Short-Description: | ||
| + | # Description:  | ||
| + | # frontend for Postfix and Sendmail that produces daily, \ | ||
| + | #                    weekly, monthly and yearly graphs of received/ | ||
| + | #                    bounced/ | ||
| + | ### END INIT INFO | ||
| + | |||
| + | MAILLOG=/ | ||
| + | PRIORITY=-19 | ||
| + | |||
| + | # Source function library. | ||
| + | . / | ||
| + | |||
| + | if [ -f / | ||
| + |         . / | ||
| + | fi | ||
| + | |||
| + | # Path to the greygraph script. | ||
| + | exe=/ | ||
| + | prog=greygraph | ||
| + | RETVAL=0 | ||
| + | |||
| + | start() { | ||
| + |     echo -n $" | ||
| + | daemon nice $PRIORITY $exe -l $MAILLOG -d \ | ||
| + |         --daemon-pid=/ | ||
| + |         --daemon-rrd=/ | ||
| + | |||
| + | RETVAL=$? | ||
| + | echo | ||
| + |     [ $RETVAL -eq 0 ] && touch / | ||
| + | return $RETVAL | ||
| + | } | ||
| + | stop() { | ||
| + |     echo -n $" | ||
| + | killproc $exe | ||
| + | RETVAL=$? | ||
| + | echo | ||
| + |     [ $RETVAL -eq 0 ] && rm -f / | ||
| + | } | ||
| + | reload() { | ||
| + |     echo -n $" | ||
| + | killproc $exe -HUP | ||
| + | RETVAL=$? | ||
| + | echo | ||
| + | } | ||
| + | |||
| + | # See how we were called. | ||
| + | case " | ||
| + | start) | ||
| + | start | ||
| + | ;; | ||
| + | stop) | ||
| + | stop | ||
| + | ;; | ||
| + | status) | ||
| + | status $exe | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | restart) | ||
| + | stop | ||
| + | start | ||
| + | RETVAL=$? | ||
| + | ;; | ||
| + | condrestart) | ||
| + |     if [ -f / | ||
| + | stop | ||
| + | start | ||
| + | RETVAL=$? | ||
| + | fi | ||
| + | ;; | ||
| + | reload) | ||
| + | reload | ||
| + | ;; | ||
| + | *) | ||
| + |     echo $" | ||
| + | RETVAL=3 | ||
| + | esac | ||
| + | |||
| + | exit $RETVAL | ||
| + | </ | ||
| + |   - **Apache Konfig**: \\ Möchte man später auf die Darstellungsseite nach dem Muster **http:// | ||
| + | # Greygraph: An postfix/ | ||
| + | # | ||
| + | Alias / | ||
| + | |||
| + | AddHandler cgi-script .cgi | ||
| + | |||
| + | < | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI | ||
| + | DirectoryIndex greygraph.cgi | ||
| + | |||
| + | Order Deny,Allow | ||
| + | Deny from all | ||
| + | Allow from 127.0.0.1 | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Apache VHost anlegen ==== | ||
| + | Damit wir bequem von unserem Browser aus, die aktuellen Graphiken abfragen können, legen wir nun einen passenden VHost an. | ||
| + |   # vim / | ||
| + | <file apache / | ||
| + | # | ||
| + | # greygraph.nausch.org | ||
| + | # | ||
| + | < | ||
| + | ServerAdmin webmaster@nausch.org | ||
| + | ServerName greygraph.nausch.org | ||
| + | ServerAlias www.greygraph.nausch.org | ||
| + | ServerPath / | ||
| + | 	DocumentRoot "/ | ||
| + | AddHandler cgi-script .cgi | ||
| + | |||
| + | 	< | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI | ||
| + | DirectoryIndex greygraph.cgi | ||
| + | Order deny,allow | ||
| + | Deny from all | ||
| + | Allow from 127.0.0.1 | ||
| + | 	</ | ||
| + | 	ErrorLog logs/ | ||
| + | 	CustomLog logs/ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | Anschließend starten wir unseren Webserver einmal durch, damit er den weiteren VHost auch verwenden kann. | ||
| + | # service postfix restart | ||
| + | |||
| + |   httpd beenden:  | ||
| + |   httpd starten:  | ||
| + | |||
| + | ==== Programmaufruf ==== | ||
| + | === manueller Start des Dämon === | ||
| + | Damit das Mail-Logfile forlaufend ausgelesen wird, starten wir nun noch den Dämon mit Hilfe des mitgelieferten Init-Scriptes // | ||
| + | # service mailgraph start | ||
| + | |||
| + |     | ||
| + | |||
| + | === automatischer Start des Dämon === | ||
| + | Damit beim Systemstart der mailgraph-Dämon richtig gestartet wird, setzen wir die nötigen symlinks automatisch mit: | ||
| + | # chkconfig greygraph on | ||
| + | Das Ganze überprüfen wir dann noch mittels | ||
| + | # chkconfig --list | grep greygraph | ||
| + | |||
| + |     | ||
| + | |||
| + | ==== Webaufruf ==== | ||
| + | Über unseren [[https:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | ===== mxgraphs ===== | ||
| + | Im Gegensatz zu den drei vorgenannten graphischen Darstellungen, | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Die Installation gestaltet sich nicht sonderlich schwer, da wir auf die drei vorgenannten Programme [[centos: | ||
| + | |||
| + | Wir werden nun als erstes die notwendigen Verzeichnisse anlegen, deren Rechte anpassen und die benötigen Dateien dort ablegen. | ||
| + |   - **Verzeichnisse anlegen und Rechte anpassen**: \\ < | ||
| + |   - **Konfigirationsdateien anlegen**: \\ Als erstes legen wir die benötigte **CSS**-Datei an. < | ||
| + | body  { width: 900px; background-color: | ||
| + | 	font-family: | ||
| + | font-size: 12pt; | ||
| + | margin: 5px } | ||
| + | h1    { margin-top: 20px; margin-bottom: | ||
| + | text-align: center } | ||
| + | h2    { background-color: | ||
| + | padding: 2px 0 2px 4px } | ||
| + | hr { height: 1px; | ||
| + | border: 0; | ||
| + | 	border-top: | ||
| + | table { border: 0px; width: 100% } | ||
| + | img { border: 0 } | ||
| + | a     { text-decoration: | ||
| + | a: | ||
| + | #jump { margin: 0 0 10px 4px } | ||
| + | #jump li { list-style: none; display: inline; | ||
| + |             | ||
| + | #jump li: | ||
| + | #jump li: | ||
| + | </ | ||
| + | |||
| + | # mxgraphs -- detailed postfix mail traffic statistics | ||
| + | # copyright (c) 2000-2007 ETH Zurich | ||
| + | # copyright (c) 2000-2007 David Schweikert < | ||
| + | # modifed 2011 for grey Markus Neubauer < | ||
| + | # modified 2013 for mxgraphs by Django < | ||
| + | # released under the GNU General Public License | ||
| + | |||
| + | use RRDs; | ||
| + | use POSIX qw(uname); | ||
| + | |||
| + | my $VERSION = " | ||
| + | |||
| + | my $host = (POSIX:: | ||
| + | my $scriptname = ' | ||
| + | my $xpoints = 800; | ||
| + | my $points_per_sample = 3; | ||
| + | my $ypoints = 160; | ||
| + | my $ypoints_err = 160; | ||
| + | my $ypoints_grey = 160; | ||
| + | my $ypoints_greydetail = 160; | ||
| + | my $ypoints_queue = 160; | ||
| + | my $rrd = '/ | ||
| + | my $rrd_virus = '/ | ||
| + | my $rrd_queue = '/ | ||
| + | my $rrd_grey = '/ | ||
| + | my $rrd_spam = '/ | ||
| + | my $tmp_dir = '/ | ||
| + | |||
| + | my @graphs = ( | ||
| + | 	{ title => ' | ||
| + | 	{ title => ' | ||
| + | 	{ title => ' | ||
| + | 	{ title => ' | ||
| + | ); | ||
| + | |||
| + | my %color = ( | ||
| + | 	sent        => ' | ||
| + | 	received  | ||
| + | 	whitelist  | ||
| + | 	new         => ' | ||
| + | 	early  | ||
| + | 	qspam  | ||
| + | 	awl         => ' | ||
| + | 	reconnectok => ' | ||
| + | 	rejected  | ||
| + | 	bounced  | ||
| + | 	virus  | ||
| + | 	spam        => ' | ||
| + | 	active  | ||
| + | 	deferred  | ||
| + | ); | ||
| + | |||
| + | sub rrd_graph(@) | ||
| + | { | ||
| + | my ($range, $file, $ypoints, @rrdargs) = @_; | ||
| + | 	my $step = $range*$points_per_sample/ | ||
| + | my $end = time; $end -= $end % $step; | ||
| + | 	my $date = localtime(time); | ||
| + | 	$date =~ s|:|\\:|g unless $RRDs:: | ||
| + | |||
| + | 	my ($graphret, | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		$RRDs:: | ||
| + | |||
| + | @rrdargs, | ||
| + | |||
| + | 		' | ||
| + | ); | ||
| + | 	my $ERR=RRDs:: | ||
| + | 	die " | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + | 	my $step = $range*$points_per_sample/ | ||
| + | 	rrd_graph($range, | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_err($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + | 	my $step = $range*$points_per_sample/ | ||
| + | 	rrd_graph($range, | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		" | ||
| + | 		' | ||
| + | 		' | ||
| + | 		' | ||
| + | |||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_queue($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_grey($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_greydetail($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub print_html() | ||
| + | { | ||
| + | 	print " | ||
| + | |||
| + | 	print << | ||
| + | < | ||
| + | < | ||
| + |  < | ||
| + |   <meta http-equiv=" | ||
| + |   < | ||
| + |   <meta http-equiv=" | ||
| + |   <meta http-equiv=" | ||
| + |   <link rel=" | ||
| + |  </ | ||
| + |  < | ||
| + | HEADER | ||
| + | |||
| + | 	print "< | ||
| + | |||
| + | 	print "< | ||
| + | 	for my $n (0..$# | ||
| + | 		print "  | ||
| + | } | ||
| + | 	print "</ | ||
| + | |||
| + | 	for my $n (0..$# | ||
| + | 		print "< | ||
| + | 		print "< | ||
| + | 		print "< | ||
| + |                 print "< | ||
| + |                 print "< | ||
| + |                 print "< | ||
| + | } | ||
| + | |||
| + | 	print << | ||
| + |  < | ||
| + |   <table border=" | ||
| + |    < | ||
| + |     <col width=" | ||
| + |     <col width=" | ||
| + |     <col width=" | ||
| + |    </ | ||
| + |    < | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + | <td> | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |    </ | ||
| + |    < | ||
| + |     <td class=" | ||
| + | </td> | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |    </ | ||
| + |    < | ||
| + |     <td class=" | ||
| + | </td> | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |    </ | ||
| + |   </ | ||
| + |  </ | ||
| + | </ | ||
| + | FOOTER | ||
| + | } | ||
| + | |||
| + | sub send_image($) | ||
| + | { | ||
| + | my ($file)= @_; | ||
| + | |||
| + | -r $file or do { | ||
| + | 		print " | ||
| + | exit 1; | ||
| + | }; | ||
| + | |||
| + | 	print " | ||
| + | 	print " | ||
| + | 	print " | ||
| + | open(IMG, $file) or die; | ||
| + | my $data; | ||
| + | 	print $data while read(IMG, $data, 16384)> | ||
| + | } | ||
| + | |||
| + | sub main() | ||
| + | { | ||
| + | 	my $uri = $ENV{REQUEST_URI} || ''; | ||
| + | 	$uri =~ s/ | ||
| + | $uri =~ s/\//,/g; | ||
| + | 	$uri =~ s/ | ||
| + | mkdir $tmp_dir, 0777 unless -d $tmp_dir; | ||
| + | 	mkdir " | ||
| + | |||
| + | 	my $img = $ENV{QUERY_STRING}; | ||
| + | if(defined $img and $img =~ /\S/) { | ||
| + | 		if($img =~ / | ||
| + | 			my $file = " | ||
| + | 			graph($graphs[$1]{seconds}, | ||
| + | 			send_image($file); | ||
| + | } | ||
| + | 		elsif($img =~ / | ||
| + | 			my $file = " | ||
| + | 			graph_err($graphs[$1]{seconds}, | ||
| + | 			send_image($file); | ||
| + | } | ||
| + |                 elsif($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph_grey($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + |                 elsif($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph_greydetail($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + |                 elsif($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph_queue($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + | else { | ||
| + | 			die " | ||
| + | } | ||
| + | } | ||
| + | else { | ||
| + | 		print_html; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main; | ||
| + | |||
| + | </ | ||
| + |   - **Apache Konfig**: \\ Möchte man später auf die Darstellungsseite nach dem Muster **http:// | ||
| + | # MX-Graph: An postfix/ | ||
| + | # | ||
| + | Alias / | ||
| + | |||
| + | AddHandler cgi-script .cgi | ||
| + | |||
| + | < | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI | ||
| + | DirectoryIndex mxgraphs.cgi | ||
| + | |||
| + | Order Deny,Allow | ||
| + | Deny from all | ||
| + | Allow from 127.0.0.1 | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Apache VHost anlegen ==== | ||
| + | Damit wir bequem von unserem Browser aus, die aktuellen Graphiken abfragen können, legen wir nun einen passenden VHost an. | ||
| + |   # vim / | ||
| + | <file apache / | ||
| + | # mxgraphs.nausch.org | ||
| + | # | ||
| + | < | ||
| + | ServerAdmin webmaster@nausch.org | ||
| + | ServerName mxgraphs.nausch.org | ||
| + | ServerAlias www.mxgraphs.nausch.org | ||
| + | ServerPath / | ||
| + | 	DocumentRoot "/ | ||
| + | AddHandler cgi-script .cgi | ||
| + | |||
| + | 	< | ||
| + | AllowOverride None | ||
| + | Options +ExecCGI | ||
| + | DirectoryIndex mxgraphs.cgi | ||
| + | Order deny,allow | ||
| + | Deny from all | ||
| + | Allow from 127.0.0.1 | ||
| + | 	</ | ||
| + | 	ErrorLog logs/ | ||
| + | 	CustomLog logs/ | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | Anschließend starten wir unseren Webserver einmal durch, damit er den weiteren VHost auch verwenden kann. | ||
| + | # service postfix restart | ||
| + | |||
| + |   httpd beenden:  | ||
| + |   httpd starten:  | ||
| + | |||
| + | ==== Webaufruf ==== | ||
| + | Über unseren [[https:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | Eine aktuelle LIVE-Übersicht einer MXGraph-Seite findet man z.B. [[https:// | ||
| + | |||
| + | ===== mxgraphs und DMARC & Co ===== | ||
| + | Hat man bei seinem Mailserver [[centos: | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Für die Einbindung der Übersichtsgraphiken für SPF, DKIM und DMARC benötigen wir das Paket **mailgraph**, | ||
| + | |||
| + | <WRAP round important> | ||
| + | |||
| + | Durch die Erweiterung, | ||
| + | \\ | ||
| + | \\ | ||
| + | Das hat zur Folge, dass ggf. vorhandenen Statistikdaten der **Letzten 31 Tage** und **Letzten 12 Monate** verloren gehen und die Daten vom Start des geänderten Daemon neu angelegt und angezeigt werden! | ||
| + | </ | ||
| + | |||
| + | Bevor wir jedoch die Änderungen an unserer Konfiguration durchführen, | ||
| + | # service mailgraph stop | ||
| + | |||
| + |     | ||
| + | |||
| + | ==== Patchen von mailgraph ==== | ||
| + | Zum Anlegen der Statistikdaten müssen wir nun das Perl-Script aus dem Paket **mailgraph** erweitern. Hierzu verwenden wir den folgenden Patch **mailgraph-1.14-8_mxgraphs_patch**.  | ||
| + | |||
| + | <file perl mailgraph-1.14-8_mxgraphs_patch> | ||
| + | +++ mailgraph  | ||
| + | @@ -4,6 +4,7 @@ | ||
| + | # copyright (c) 2000-2007 ETH Zurich | ||
| + |  # copyright (c) 2000-2007 David Schweikert < | ||
| + | # released under the GNU General Public License | ||
| + | +# with dkim-, dmarc, spf-patch Sebastian van de Meer < | ||
| + | |||
| + |  ######## | ||
| + |   | ||
| + | @@ -381,7 +382,7 @@ | ||
| + |  my $rrd_virus = " | ||
| + | my $year; | ||
| + |  my $this_minute; | ||
| + | -my %sum = ( sent => 0, received => 0, bounced => 0, rejected => 0, virus => 0, spam => 0 ); | ||
| + | +my %sum = ( sent => 0, received => 0, bounced => 0, rejected => 0, spfnone => 0, spffail => 0, spfpass => 0, dmarcnone => 0, dmarcfail => 0, dmarcpass => 0, dkimnone => 0, dkimfail => 0, dkimpass => 0, virus => 0, spam => 0, greylisted => 0, delayed => 0); | ||
| + |  my $rrd_inited=0; | ||
| + | |||
| + | my %opt = (); | ||
| + | @@ -395,6 +396,15 @@ | ||
| + |  sub event_rejected($); | ||
| + |  sub event_virus($); | ||
| + |  sub event_spam($); | ||
| + | +sub event_spfnone($); | ||
| + | +sub event_spffail($); | ||
| + | +sub event_spfpass($); | ||
| + | +sub event_dmarcnone($); | ||
| + | +sub event_dmarcfail($); | ||
| + | +sub event_dmarcpass($); | ||
| + | +sub event_dkimnone($); | ||
| + | +sub event_dkimfail($); | ||
| + | +sub event_dkimpass($); | ||
| + |  sub init_rrd($); | ||
| + | sub update($); | ||
| + | |||
| + | @@ -528,6 +538,15 @@ | ||
| + |                                 ' | ||
| + |                                 ' | ||
| + |                                 ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + | +                               ' | ||
| + |                                 " | ||
| + |                                 " | ||
| + |                                 " | ||
| + | @@ -853,6 +872,45 @@ | ||
| + |                         event($time, | ||
| + | } | ||
| + | } | ||
| + | +        elsif ($prog eq ' | ||
| + | + if ($text =~ /SPF pass:/) { | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | + elsif($text =~ /SPF none:/) { | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | +                | ||
| + | +                        | ||
| + | + } | ||
| + | +# elsif($text =~ /SPF fail:\b/) { | ||
| + | +#                        event($time, | ||
| + | +#                }     | ||
| + | +#                elsif($text =~ /SPF softfail: | ||
| + | +#                        event($time, | ||
| + | +# } | ||
| + | +        }     | ||
| + | +        elsif ($prog eq ' | ||
| + | +                if ($text =~ /DKIM verification successful/ | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | + elsif($text =~ /no signature data/) { | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | + elsif($text =~ /bad signature data/) { | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | +        }     | ||
| + | +        elsif ($prog eq ' | ||
| + | + if ($text =~ /pass/) { | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | + elsif($text =~ /none/) { | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | + elsif($text =~ /fail/) { | ||
| + | +                        event($time, | ||
| + | +                }     | ||
| + | +        }     | ||
| + | } | ||
| + | |||
| + | sub event($$) | ||
| + | @@ -870,13 +928,17 @@ | ||
| + |         return 1 if $m == $this_minute; | ||
| + |         return 0 if $m < $this_minute; | ||
| + | |||
| + | -       print " | ||
| + | -        | ||
| + | +#      print " | ||
| + | +       print " | ||
| + | +#      RRDs:: | ||
| + | +        | ||
| + |         RRDs:: | ||
| + | if($m > $this_minute+$rrdstep) { | ||
| + |                 for(my $sm=$this_minute+$rrdstep; | ||
| + | -                       print " | ||
| + | -                        | ||
| + | +#                      print " | ||
| + | +                       print " | ||
| + | +#                      RRDs:: | ||
| + | +                        | ||
| + |                         RRDs:: | ||
| + | } | ||
| + | } | ||
| + | @@ -885,6 +947,15 @@ | ||
| + |         $sum{received}=0; | ||
| + |         $sum{bounced}=0; | ||
| + |         $sum{rejected}=0; | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + |         $sum{virus}=0; | ||
| + |         $sum{spam}=0; | ||
| + | return 1; | ||
| + | </ | ||
| + | |||
| + | Zunächst kopieren wir die vorhandene Datei **mailgraph** nach // | ||
| + |    # cp / | ||
| + | |||
| + | Dann wechseln wir in das Zielverzeichnis. | ||
| + | # cd /tmp | ||
| + | |||
| + | Und laden uns den oben aufgeführten Patch zum Ändern der vorhandenen Datei auf unseren Rechner. | ||
| + | |||
| + | Anschließend wenden wir den Patch mit nachfolgendem Aufruf an. | ||
| + | # patch -p0 < mailgraph-1.14-8_mxgraphs_patch | ||
| + | |||
| + |     | ||
| + | |||
| + | Zu guter letzt kopieren wir nun noch das geänderte perl-Script zurück an Ort und Stelle. | ||
| + | # mv mailgraph /usr/sbin/ -f | ||
| + | |||
| + | Nun können wir den Daemon **mailgraph** wieder starten. | ||
| + | # service mailgraph start | ||
| + | |||
| + | Starting mailgraph:  | ||
| + | |||
| + | ==== Patchen von mxgraphs.cgi ==== | ||
| + | Damit die zusätzlichen Statistikdaten für die drei Milter **SPF**, **DKIM** und **DMARC** graphisch aufbereitet werden können, müssen wir unser vorhandenes // | ||
| + | Zum Anlegen der Statistikdaten müssen wir nun das Perl-Script aus dem Paket **mailgraph** erweitern.  | ||
| + | |||
| + | Hierzu verwenden wir den folgenden Patch **mxgraphs_spf_dkim_dmarc.patch**.  | ||
| + | |||
| + | <file perl mxgraphs_spf_dkim_dmarc.patch> | ||
| + | +++ mxgraphs.cgi  | ||
| + | @@ -5,12 +5,14 @@ | ||
| + |  # copyright (c) 2000-2007 David Schweikert < | ||
| + |  # modifed 2011 for grey Markus Neubauer < | ||
| + |  # modified 2013 for mxgraphs by Django < | ||
| + | +# modified 2014 for mxgraphs (v2) by Django < | ||
| + | +# patches from  Sebastian van de Meer < | ||
| + | # released under the GNU General Public License | ||
| + | |||
| + | use RRDs; | ||
| + | use POSIX qw(uname); | ||
| + | |||
| + | -my $VERSION = " | ||
| + | +my $VERSION = " | ||
| + | |||
| + |  my $host = (POSIX:: | ||
| + |  my $scriptname = ' | ||
| + | @@ -21,6 +23,9 @@ | ||
| + | my $ypoints_grey = 160; | ||
| + | my $ypoints_greydetail = 160; | ||
| + | my $ypoints_queue = 160; | ||
| + | +my $ypoints_spf = 160; | ||
| + | +my $ypoints_dkim = 160; | ||
| + | +my $ypoints_dmarc = 160; | ||
| + |  my $rrd = '/ | ||
| + |  my $rrd_virus = '/ | ||
| + |  my $rrd_queue = '/ | ||
| + | @@ -39,17 +44,26 @@ | ||
| + |         sent        => ' | ||
| + |         received  | ||
| + |         whitelist  | ||
| + | -        | ||
| + | +        | ||
| + |         early       => ' | ||
| + |         qspam       => ' | ||
| + |         awl         => ' | ||
| + | -        | ||
| + | +        | ||
| + |         rejected  | ||
| + |         bounced  | ||
| + |         virus       => ' | ||
| + |         spam        => ' | ||
| + |         active  | ||
| + |         deferred  | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        dkimnone  | ||
| + | +        dkimfail  | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | +        | ||
| + | ); | ||
| + | |||
| + | sub rrd_graph(@) | ||
| + | @@ -276,6 +290,128 @@ | ||
| + | } | ||
| + | |||
| + | |||
| + | +sub graph_spf($$) | ||
| + | +{ | ||
| + | + my ($range, $file) = @_; | ||
| + | +       my $step = $range*$points_per_sample/ | ||
| + | +        | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + ); | ||
| + | +} | ||
| + | + | ||
| + | + | ||
| + | +sub graph_dkim($$) | ||
| + | +{ | ||
| + | + my ($range, $file) = @_; | ||
| + | +       my $step = $range*$points_per_sample/ | ||
| + | +        | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + ); | ||
| + | +} | ||
| + | + | ||
| + | + | ||
| + | +sub graph_dmarc($$) | ||
| + | +{ | ||
| + | + my ($range, $file) = @_; | ||
| + | +       my $step = $range*$points_per_sample/ | ||
| + | +        | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               " | ||
| + | +               ' | ||
| + | +               ' | ||
| + | +               ' | ||
| + | + ); | ||
| + | +} | ||
| + | + | ||
| + | sub print_html() | ||
| + | { | ||
| + |         print " | ||
| + | @@ -293,7 +429,7 @@ | ||
| + |   < | ||
| + |   | ||
| + | |||
| + | -       print "< | ||
| + | +       print "< | ||
| + | |||
| + |         print "< | ||
| + |         for my $n (0..$# | ||
| + | @@ -308,6 +444,9 @@ | ||
| + |                  print "< | ||
| + |                  print "< | ||
| + |                  print "< | ||
| + | +               print "< | ||
| + | +               print "< | ||
| + | +               print "< | ||
| + | } | ||
| + | |||
| + |         print << | ||
| + | @@ -321,10 +460,12 @@ | ||
| + |     <tr class=" | ||
| + |      < | ||
| + |       <a href=" | ||
| + | -     <a href=" | ||
| + | +     <a href=" | ||
| + |      </ | ||
| + |      < | ||
| + |       <a href=" | ||
| + | +     <a href=" | ||
| + | +     <a href=" | ||
| + |      </ | ||
| + |      < | ||
| + |       <a href=" | ||
| + | @@ -334,15 +475,9 @@ | ||
| + |      < | ||
| + |      </ | ||
| + |      < | ||
| + | -     <a href=" | ||
| + | -     <a href=" | ||
| + | - </td> | ||
| + | -   </ | ||
| + | -   < | ||
| + | -    <td class=" | ||
| + | - </td> | ||
| + | -    <td class=" | ||
| + | -     <a href=" | ||
| + | +     <a href=" | ||
| + | +     <a href=" | ||
| + | +     <a href=" | ||
| + |      </ | ||
| + | </tr> | ||
| + |    </ | ||
| + | @@ -404,6 +539,21 @@ | ||
| + |                           | ||
| + |                           | ||
| + | } | ||
| + | +                | ||
| + | +                       my $file = " | ||
| + | +                        | ||
| + | +                        | ||
| + | + } | ||
| + | +                elsif($img =~ / | ||
| + | +                        my $file = " | ||
| + | +                        graph_dkim($graphs[$1]{seconds}, | ||
| + | +                        send_image($file); | ||
| + | + } | ||
| + | +                | ||
| + | +                       my $file = " | ||
| + | +                        | ||
| + | +                        | ||
| + | + } | ||
| + | else { | ||
| + |                         die " | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Wie auch schon zuvor bei unserem Daemon, kopieren wir zum Patchen das Perl-Script nach // | ||
| + |    # cp / | ||
| + | |||
| + | Dann laden wir den obigen Patch auf unseren Rechner und legen diesen im Verzeichnis // | ||
| + | |||
| + | Anschließend wenden wir den Patch an. | ||
| + | # patch -p0 < mxgraphs_spf_dkim_dmarc.patch | ||
| + | |||
| + | Und kopieren zu guter Letzt das geänderte Script an Ort und Stelle. | ||
| + |    # mv / | ||
| + | |||
| + | Alternativ können wir auch nachfolgendes CGI-sript, bei dem der Patch schon angewandt wurde, auf unseren Rechner laden und ins Verzeichnis // | ||
| + | |||
| + | <file perl / | ||
| + | |||
| + | # mxgraphs -- detailed postfix mail traffic statistics | ||
| + | # copyright (c) 2000-2007 ETH Zurich | ||
| + | # copyright (c) 2000-2007 David Schweikert < | ||
| + | # modifed 2011 for grey Markus Neubauer < | ||
| + | # modified 2013 for mxgraphs by Django < | ||
| + | # released under the GNU General Public License | ||
| + | |||
| + | use RRDs; | ||
| + | use POSIX qw(uname); | ||
| + | |||
| + | my $VERSION = " | ||
| + | |||
| + | my $host = (POSIX:: | ||
| + | my $scriptname = ' | ||
| + | my $xpoints = 800; | ||
| + | my $points_per_sample = 3; | ||
| + | my $ypoints = 160; | ||
| + | my $ypoints_err = 160; | ||
| + | my $ypoints_grey = 160; | ||
| + | my $ypoints_greydetail = 160; | ||
| + | my $ypoints_queue = 160; | ||
| + | my $rrd = '/ | ||
| + | my $rrd_virus = '/ | ||
| + | my $rrd_queue = '/ | ||
| + | my $rrd_grey = '/ | ||
| + | my $rrd_spam = '/ | ||
| + | my $tmp_dir = '/ | ||
| + | |||
| + | my @graphs = ( | ||
| + |         { title => ' | ||
| + |         { title => ' | ||
| + |         { title => ' | ||
| + |         { title => ' | ||
| + | ); | ||
| + | |||
| + | my %color = ( | ||
| + |         sent        => ' | ||
| + |         received  | ||
| + |         whitelist  | ||
| + |         new         => ' | ||
| + |         early       => ' | ||
| + |         qspam       => ' | ||
| + |         awl         => ' | ||
| + |         reconnectok => ' | ||
| + |         rejected  | ||
| + |         bounced  | ||
| + |         virus       => ' | ||
| + |         spam        => ' | ||
| + |         active  | ||
| + |         deferred  | ||
| + | ); | ||
| + | |||
| + | sub rrd_graph(@) | ||
| + | { | ||
| + | my ($range, $file, $ypoints, @rrdargs) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + | my $end = time; $end -= $end % $step; | ||
| + |         my $date = localtime(time); | ||
| + |         $date =~ s|:|\\:|g unless $RRDs:: | ||
| + | |||
| + |         my ($graphret, | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 $RRDs:: | ||
| + | |||
| + | @rrdargs, | ||
| + | |||
| + |                 ' | ||
| + | ); | ||
| + |         my $ERR=RRDs:: | ||
| + |         die " | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_err($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_queue($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_grey($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub graph_greydetail($$) | ||
| + | { | ||
| + | my ($range, $file) = @_; | ||
| + |         my $step = $range*$points_per_sample/ | ||
| + |         rrd_graph($range, | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 " | ||
| + |                 ' | ||
| + |                 ' | ||
| + |                 ' | ||
| + | |||
| + | ); | ||
| + | } | ||
| + | |||
| + | |||
| + | sub print_html() | ||
| + | { | ||
| + |         print " | ||
| + | |||
| + |         print << | ||
| + | < | ||
| + | < | ||
| + |  < | ||
| + |   <meta http-equiv=" | ||
| + |   < | ||
| + |   <meta http-equiv=" | ||
| + |   <meta http-equiv=" | ||
| + |   <link rel=" | ||
| + |  </ | ||
| + |  < | ||
| + | HEADER | ||
| + | |||
| + |         print "< | ||
| + | |||
| + |         print "< | ||
| + |         for my $n (0..$# | ||
| + |                 print "  | ||
| + | } | ||
| + |         print "</ | ||
| + | |||
| + |         for my $n (0..$# | ||
| + |                 print "< | ||
| + |                 print "< | ||
| + |                 print "< | ||
| + |                 print "< | ||
| + |                 print "< | ||
| + |                 print "< | ||
| + | } | ||
| + | |||
| + |         print << | ||
| + |  < | ||
| + |   <table border=" | ||
| + |    < | ||
| + |     <col width=" | ||
| + |     <col width=" | ||
| + |     <col width=" | ||
| + |    </ | ||
| + |    < | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + | <td> | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |    </ | ||
| + |    < | ||
| + |     <td class=" | ||
| + | </td> | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |    </ | ||
| + |    < | ||
| + |     <td class=" | ||
| + | </td> | ||
| + |     <td class=" | ||
| + |      <a href=" | ||
| + | </td> | ||
| + |    </ | ||
| + |   </ | ||
| + |  </ | ||
| + | </ | ||
| + | FOOTER | ||
| + | } | ||
| + | |||
| + | sub send_image($) | ||
| + | { | ||
| + | my ($file)= @_; | ||
| + | |||
| + | -r $file or do { | ||
| + |                 print " | ||
| + | exit 1; | ||
| + | }; | ||
| + | |||
| + |         print " | ||
| + |         print " | ||
| + |         print " | ||
| + | open(IMG, $file) or die; | ||
| + | my $data; | ||
| + |         print $data while read(IMG, $data, 16384)> | ||
| + | } | ||
| + | |||
| + | sub main() | ||
| + | { | ||
| + |         my $uri = $ENV{REQUEST_URI} || ''; | ||
| + |         $uri =~ s/ | ||
| + | $uri =~ s/\//,/g; | ||
| + |         $uri =~ s/ | ||
| + | mkdir $tmp_dir, 0777 unless -d $tmp_dir; | ||
| + |         mkdir " | ||
| + | |||
| + |         my $img = $ENV{QUERY_STRING}; | ||
| + | if(defined $img and $img =~ /\S/) { | ||
| + |                 if($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + |                 elsif($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph_err($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + |                 elsif($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph_grey($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + |                 elsif($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph_greydetail($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + |                 elsif($img =~ / | ||
| + |                         my $file = " | ||
| + |                         graph_queue($graphs[$1]{seconds}, | ||
| + |                         send_image($file); | ||
| + | } | ||
| + | else { | ||
| + |                         die " | ||
| + | } | ||
| + | } | ||
| + | else { | ||
| + | print_html; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | main; | ||
| + | </ | ||
| + | |||
| + | ==== Webaufruf ==== | ||
| + | Über unseren [[https:// | ||
| + | |||
| + | {{ : | ||
| + | ===== AWStats ===== | ||
| + | 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/ | ||
| + | |||
| + | ==== Installation ==== | ||
| + | Die Grundinstallation von **// | ||
| + | |||
| + | <WRAP round important> | ||
| + | |||
| + | Damit eine erfolgreiche LOG-Datei-Auswertung mit Hilfe von AWStats durchgeführt werden kann, müssen auf die Dateien / | ||
| + |    # chmod 644 / | ||
| + | </ | ||
| + | |||
| + | ==== Konfiguration ==== | ||
| + | Zur eigentlichen Logfileauswertung legen wir uns nun eine eigene Konfigurationdatei für // | ||
| + |    # cp / | ||
| + | |||
| + | Darin passen wir nun alle Konfigurationsoptionen, | ||
| + |    # vim / | ||
| + | <file bash / | ||
| + | # | ||
| + | # Copy this file into awstats.www.mydomain.conf and edit this new config file | ||
| + | # to setup AWStats (See documentation in docs/ directory). | ||
| + | # The config file must be in / | ||
| + | # Unix/Linux) or same directory than awstats.pl (Windows, Mac, Unix/ | ||
| + | # To include an environment variable in any parameter (AWStats will replace | ||
| + | # it with its value when reading it), follow the example: | ||
| + | # Parameter=" | ||
| + | # Note that environment variable AWSTATS_CURRENT_CONFIG is always defined with | ||
| + | # the config value in an AWStats running session and can be used like others. | ||
| + | # | ||
| + | # $Revision: 1.350 $ - $Author: eldy $ - $Date: 2010/09/29 19:16:21 $ | ||
| + | |||
| + | |||
| + | |||
| + | # | ||
| + | # MAIN SETUP SECTION (Required to make AWStats work) | ||
| + | # | ||
| + | |||
| + | # " | ||
| + | # Possible values: A full path, or a relative path from awstats.pl directory. | ||
| + | # Example: "/ | ||
| + | # Example: " | ||
| + | # You can also use tags in this filename if you need a dynamic file name | ||
| + | # depending on date or time (Replacement is made by AWStats at the beginning | ||
| + | # of its execution). This is available tags : | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | # use n=24 if you need (1-7, 1=monday) | ||
| + | #    | ||
| + | # use n=24 if you need (0-6, 0=monday) | ||
| + | # Use 0 for n if you need current year, month, day, hour... | ||
| + | # Example: "/ | ||
| + | # Example: " | ||
| + | # You can also use a pipe if log file come from a pipe : | ||
| + | # Example: "gzip -d </ | ||
| + | # If there are several log files from load balancing servers : | ||
| + | # Example: "/ | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LogFile="/ | ||
| + | LogFile=" | ||
| + | |||
| + | # Enter the log file type you want to analyze. | ||
| + | # Possible values: | ||
| + | # W - For a web log file | ||
| + | # S - For a streaming log file | ||
| + | # M - For a mail log file | ||
| + | # F - For a ftp log file | ||
| + | # Example: W | ||
| + | # Default: W | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LogType=W | ||
| + | LogType=M | ||
| + | |||
| + | # Enter here your log format (Must match your web server config. See setup | ||
| + | # instructions in documentation to know how to configure your web server to | ||
| + | # have the required log format). | ||
| + | # Possible values: 1,2,3,4 or " | ||
| + | # 1 - Apache or Lotus Notes/ | ||
| + | # 2 - IIS or ISA format (IIS W3C log format). See FAQ-COM115 For ISA. | ||
| + | # 3 - Webstar native log format. | ||
| + | # 4 - Apache or Squid native common log format (NCSA common/CLF log format) | ||
| + | #     With LogFormat=4, | ||
| + | # " | ||
| + | # you must use following keys to define the log format string (See FAQ for | ||
| + | # ftp, mail or exotic web log format examples): | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #    | ||
| + | #                      | ||
| + | # will discard records not in SiteDomain nor HostAliases | ||
| + | #    | ||
| + | #                      | ||
| + | #    | ||
| + | #                      | ||
| + | # If your log format has some fields not included in this list, use: | ||
| + | #    | ||
| + | #    | ||
| + | # | ||
| + | # Examples for Apache combined logs (following two examples are equivalent): | ||
| + | # LogFormat = 1 | ||
| + | # LogFormat = "%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot" | ||
| + | # | ||
| + | # Example for IIS: | ||
| + | # LogFormat = 2 | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LogFormat=1 | ||
| + | LogFormat=" | ||
| + | |||
| + | |||
| + | # If your log field' | ||
| + | # This parameter is not used if LogFormat is a predefined value (1,2,3,4) | ||
| + | # Backslash can be used as escape character. | ||
| + | # Example: " " | ||
| + | # Example: " | ||
| + | # Example: " | ||
| + | # Example: "," | ||
| + | # Default: " " | ||
| + | # | ||
| + | LogSeparator=" | ||
| + | |||
| + | |||
| + | # " | ||
| + | # server name, used to reach the web site. | ||
| + | # If you share the same log file for several virtual web servers, this | ||
| + | # parameter is used to tell AWStats to filter record that contains records for | ||
| + | # this virtual host name only (So check that this virtual hostname can be | ||
| + | # found in your log file and use a personalized log format that include the | ||
| + | # %virtualname tag). | ||
| + | # But for multi hosting a better solution is to have one log file for each | ||
| + | # virtual web server. In this case, this parameter is only used to generate | ||
| + | # full URL's links when ShowLinksOnUrl option is set to 1. | ||
| + | # If analyzing mail log, enter here the domain name of mail server. | ||
| + | # Example: " | ||
| + | # Example: " | ||
| + | # Example: " | ||
| + | # Example: " | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: SiteDomain=" | ||
| + | SiteDomain=" | ||
| + | |||
| + | # Enter here all other possible domain names, addresses or virtual host | ||
| + | # aliases someone can use to access your site. Try to keep only the minimum | ||
| + | # number of possible names/ | ||
| + | # You can repeat the " | ||
| + | # This parameter is used to analyze referer field in log file and to help | ||
| + | # AWStats to know if a referer URL is a local URL of same site or an URL of | ||
| + | # another site. | ||
| + | # Note: Use space between each value. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Note: You can also use @/ | ||
| + | # Example: " | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: HostAliases=" | ||
| + | HostAliases=„localhost 127.0.0.1 REGEX[nausch\.org$] REGEX[www\.nausch\.org$]“ | ||
| + | |||
| + | |||
| + | # If you want to have hosts reported by name instead of ip address, AWStats | ||
| + | # need to make reverse DNS lookups (if not already done in your log file). | ||
| + | # With DNSLookup to 0, all hosts will be reported by their IP addresses and | ||
| + | # not by the full hostname of visitors (except if names are already available | ||
| + | # in log file). | ||
| + | # If you want/need to set DNSLookup to 1, don't forget that this will reduce | ||
| + | # dramatically AWStats update process speed. Do not use on large web sites. | ||
| + | # Note: Reverse DNS lookup is done on IPv4 only (Enable ipv6 plugin for IPv6). | ||
| + | # Note: Result of DNS Lookup can be used to build the Country report. However | ||
| + | # it is highly recommanded to enable the plugin ' | ||
| + | # have an accurate Country report with no need of DNS Lookup. | ||
| + | # Possible values: | ||
| + | # 0 - No DNS Lookup | ||
| + | # 1 - DNS Lookup is fully enabled | ||
| + | # 2 - DNS Lookup is made only from static DNS cache file (if it exists) | ||
| + | # Default: 2 | ||
| + | # | ||
| + | DNSLookup=2 | ||
| + | |||
| + | |||
| + | # When AWStats updates its statistics, it stores results of its analysis in | ||
| + | # files (AWStats database). All those files are written in the directory | ||
| + | # defined by the " | ||
| + | # you want AWStats to save its database and working files into. | ||
| + | # Warning: If you want to be able to use the " | ||
| + | # feature (see later), you need " | ||
| + | # directory (and " | ||
| + | # Example: "/ | ||
| + | # Example: " | ||
| + | # Example: " | ||
| + | # Default: " | ||
| + | # | ||
| + | DirData="/ | ||
| + | |||
| + | |||
| + | # Relative or absolute web URL of your awstats cgi-bin directory. | ||
| + | # This parameter is used only when AWStats is run from command line | ||
| + | # with -output option (to generate links in HTML reported page). | ||
| + | # Example: "/ | ||
| + | # Default: "/ | ||
| + | # | ||
| + | DirCgi="/ | ||
| + | |||
| + | |||
| + | # Relative or absolute web URL of your awstats icon directory. | ||
| + | # If you build static reports ("... -output > outputpath/ | ||
| + | # path of icon directory relative to the output directory ' | ||
| + | # Example: "/ | ||
| + | # Example: " | ||
| + | # Default: "/ | ||
| + | # | ||
| + | DirIcons="/ | ||
| + | |||
| + | |||
| + | # When this parameter is set to 1, AWStats adds a button on report page to | ||
| + | # allow to " | ||
| + | # made from a browser, AWStats is run as a CGI by the web server user defined | ||
| + | # in your web server (user " | ||
| + | # IIS), so the " | ||
| + | # awstatsMMYYYY[.xxx].txt must be writable by this user. Change permissions if | ||
| + | # necessary to " | ||
| + | # Warning: Update process can be long so you might experience "time out" | ||
| + | # browser errors if you don't launch AWStats frequently enough. | ||
| + | # When set to 0, update is only made when AWStats is run from the command | ||
| + | # line interface (or a task scheduler). | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: AllowToUpdateStatsFromBrowser=0 | ||
| + | AllowToUpdateStatsFromBrowser=1 | ||
| + | |||
| + | |||
| + | # AWStats saves and sorts its database on a month basis (except if using | ||
| + | # databasebreak option from command line).  | ||
| + | # However, if you choose the -month=all from command line or | ||
| + | # value ' | ||
| + | # needs to reload all data for full year (each month), and sort them, | ||
| + | # requiring a large amount of time, memory and CPU. This might be a problem | ||
| + | # for web hosting providers that offer AWStats for large sites, on shared | ||
| + | # servers, to non CPU cautious customers. | ||
| + | # For this reason, the 'full year' is only enabled on Command Line by default. | ||
| + | # You can change this by setting this parameter to 0, 1, 2 or 3. | ||
| + | # Possible values: | ||
| + | # 0 - Never allowed | ||
| + | # 1 - Allowed on CLI only, -Year- value in combo is not visible | ||
| + | # 2 - Allowed on CLI only, -Year- value in combo is visible but not allowed | ||
| + | # 3 - Possible on CLI and CGI | ||
| + | # Default: 2 | ||
| + | # | ||
| + | AllowFullYearView=2 | ||
| + | |||
| + | |||
| + | |||
| + | # | ||
| + | # OPTIONAL SETUP SECTION (Not required but increase AWStats features) | ||
| + | # | ||
| + | |||
| + | # When the update process runs, AWStats can set a lock file in TEMP or TMP | ||
| + | # directory. This lock is to avoid to have 2 update processes running at the | ||
| + | # same time to prevent unknown conflicts problems and avoid DoS attacks when | ||
| + | # AllowToUpdateStatsFromBrowser is set to 1. | ||
| + | # Because, when you use lock file, you can experience sometimes problems in | ||
| + | # lock file not correctly removed (killed process for example requires that | ||
| + | # you remove the file manualy), this option is not enabled by default (Do | ||
| + | # not enable this option with no console server access). | ||
| + | # Change : Effective immediatly | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | EnableLockForUpdate=1 | ||
| + | |||
| + | |||
| + | # AWStats can do reverse DNS lookups through a static DNS cache file that was | ||
| + | # previously created manually. If no path is given in static DNS cache file | ||
| + | # name, AWStats will search DirData directory. This file is never changed. | ||
| + | # This option is not used if DNSLookup=0. | ||
| + | # Note: DNS cache file format is ' | ||
| + | # or just ' | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "/ | ||
| + | # Default: " | ||
| + | # | ||
| + | DNSStaticCacheFile=" | ||
| + | |||
| + | |||
| + | # AWStats can do reverse DNS lookups through a DNS cache file that was created | ||
| + | # by a previous run of AWStats. This file is erased and recreated after each | ||
| + | # statistics update process. You don't need to create and/or edit it. | ||
| + | # AWStats will read and save this file in DirData directory. | ||
| + | # This option is used only if DNSLookup=1. | ||
| + | # Note: If a DNSStaticCacheFile is available, AWStats will check for DNS | ||
| + | # lookup in DNSLastUpdateCacheFile after checking into DNSStaticCacheFile. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "/ | ||
| + | # Default: " | ||
| + | # | ||
| + | DNSLastUpdateCacheFile=" | ||
| + | |||
| + | |||
| + | # You can specify specific IP addresses that should NOT be looked up in DNS. | ||
| + | # This option is used only if DNSLookup=1. | ||
| + | # Note: Use space between each value. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | SkipDNSLookupFor="" | ||
| + | |||
| + | |||
| + | # The following two parameters allow you to protect a config file from being | ||
| + | # read by AWStats when called from a browser if web user has not been | ||
| + | # authenticated. Your AWStats program must be in a web protected " | ||
| + | # Apache, you can use .htaccess files to do so. With other web servers, see | ||
| + | # your server setup manual). | ||
| + | # Change : Effective immediatly | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: AllowAccessFromWebToAuthenticatedUsersOnly=0 | ||
| + | # | ||
| + | AllowAccessFromWebToAuthenticatedUsersOnly=0 | ||
| + | |||
| + | |||
| + | # This parameter gives the list of all authorized authenticated users to view | ||
| + | # statistics for this domain/ | ||
| + | # AllowAccessFromWebToAuthenticatedUsersOnly is set to 1. | ||
| + | # Change : Effective immediatly | ||
| + | # Example: "user1 user2" | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: AllowAccessFromWebToFollowingAuthenticatedUsers="" | ||
| + | # AllowAccessFromWebToFollowingAuthenticatedUsers=" | ||
| + | AllowAccessFromWebToFollowingAuthenticatedUsers="" | ||
| + | |||
| + | |||
| + | # When this parameter is defined to something, the IP address of the user that | ||
| + | # reads its statistics from a browser (when AWStats is used as a CGI) is | ||
| + | # checked and must match one of the IP address values or ranges. | ||
| + | # Change : Effective immediatly | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | AllowAccessFromWebToFollowingIPAddresses="" | ||
| + | |||
| + | |||
| + | # If the " | ||
| + | # error. However, you can ask AWStats to create it. | ||
| + | # This option can be used by some Web Hosting Providers that has defined a | ||
| + | # dynamic value for DirData (for example DirData="/ | ||
| + | # don't want to have to create a new directory each time they add a new user. | ||
| + | # Change : Effective immediatly | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | CreateDirDataIfNotExists=0 | ||
| + | |||
| + | |||
| + | # You can choose in which format the Awstats history database is saved. | ||
| + | # Note: Using " | ||
| + | # larger than using " | ||
| + | # Change : Database format is switched after next update | ||
| + | # Possible values: text or xml | ||
| + | # Default: text | ||
| + | # | ||
| + | BuildHistoryFormat=text | ||
| + | |||
| + | |||
| + | # If you prefer having the report output pages be built as XML compliant pages | ||
| + | # instead of simple HTML pages, you can set this to ' | ||
| + | # properly with old browsers). | ||
| + | # Change : Effective immediatly | ||
| + | # Possible values: html or xhtml | ||
| + | # Default: html | ||
| + | # | ||
| + | BuildReportFormat=html | ||
| + | |||
| + | |||
| + | # AWStats databases can be updated from command line of from a browser (when | ||
| + | # used as a cgi program). So AWStats database files need write permission | ||
| + | # for both command line user and default web server user (nobody for Unix, | ||
| + | # IUSR_xxx for IIS/ | ||
| + | # To avoid permission problems between update process (run by an admin user) | ||
| + | # and CGI process (ran by a low level user), AWStats can save its database  | ||
| + | # files with read and write permissions for everyone. | ||
| + | # By default, AWStats keeps default user permissions on updated files. If you | ||
| + | # set AllowToUpdateStatsFromBrowser to 1, you can change this parameter to 1. | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: SaveDatabaseFilesWithPermissionsForEveryone=0 | ||
| + | SaveDatabaseFilesWithPermissionsForEveryone=1 | ||
| + | |||
| + | |||
| + | # AWStats can purge log file, after analyzing it. Note that AWStats is able | ||
| + | # to detect new lines in a log file, to process only them, so you can launch | ||
| + | # AWStats as often as you want, even with this parameter to 0. | ||
| + | # With 0, no purge is made, so you must use a scheduled task or a web server | ||
| + | # that make this purge frequently. | ||
| + | # With 1, the purge of the log file is made each time AWStats update is run. | ||
| + | # This parameter doesn' | ||
| + | # file to be purged). | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | PurgeLogFile=0 | ||
| + | |||
| + | |||
| + | # When PurgeLogFile is setup to 1, AWStats will clean your log file after | ||
| + | # processing it. You can however keep an archive file of all processed log | ||
| + | # records by setting this parameter (For example if you want to use another | ||
| + | # log analyzer). The archived log file is saved in " | ||
| + | # awstats_archive.configname[.suffix].log | ||
| + | # This parameter is not used if PurgeLogFile=0 | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0, 1, or tags (See LogFile parameter) for suffix | ||
| + | # Example: 1 | ||
| + | # Example: %YYYY%MM%DD | ||
| + | # Default: 0 | ||
| + | # | ||
| + | ArchiveLogRecords=0 | ||
| + | |||
| + | |||
| + | # Each time you run the update process, AWStats overwrites the ' | ||
| + | # for the month (awstatsMMYYYY[.*].txt) with the updated one. | ||
| + | # When write errors occurs (IO, disk full,...), this historic file can be | ||
| + | # corrupted and must be deleted. Because this file contains information of all | ||
| + | # past processed log files, you will loose old stats if removed. So you can | ||
| + | # ask AWStats to save last non corrupted file in a .bak file. This file is | ||
| + | # stored in " | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | KeepBackupOfHistoricFiles=1 | ||
| + | |||
| + | |||
| + | # Default index page name for your web server. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: " | ||
| + | # | ||
| + | DefaultFile=" | ||
| + | |||
| + | |||
| + | # Do not include access from clients that match following criteria. | ||
| + | # If your log file contains IP addresses in host field, you must enter here | ||
| + | # matching IP addresses criteria. | ||
| + | # If DNS lookup is already done in your log file, you must enter here hostname | ||
| + | # criteria, else enter ip address criteria. | ||
| + | # The opposite parameter of " | ||
| + | # Note: Use space between each value. This parameter is not case sensitive. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: SkipHosts=" | ||
| + | SkipHosts="" | ||
| + | |||
| + | # Do not include access from clients with a user agent that match following | ||
| + | # criteria. If you want to exclude a robot, you should update the robots.pm | ||
| + | # file instead of this parameter. | ||
| + | # The opposite parameter of " | ||
| + | # Note: Use space between each value. This parameter is not case sensitive. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | SkipUserAgents="" | ||
| + | |||
| + | |||
| + | # Use SkipFiles to ignore access to URLs that match one of following entries. | ||
| + | # You can enter a list of not important URLs (like framed menus, hidden pages, | ||
| + | # etc...) to exclude them from statistics. You must enter here exact relative | ||
| + | # URL as found in log file, or a matching REGEX value. Check apply on URL with | ||
| + | # all its query paramaters. | ||
| + | # For example, to ignore / | ||
| + | # pages in a particular directory, add " | ||
| + | # The opposite parameter of " | ||
| + | # Note: Use space between each value. This parameter is or not case sensitive | ||
| + | # depending on URLNotCaseSensitive parameter. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "/ | ||
| + | # Default: "" | ||
| + | # | ||
| + | SkipFiles="" | ||
| + | |||
| + | |||
| + | # Use SkipReferrersBlackList if you want to exclude records coming from a SPAM | ||
| + | # referrer. Parameter must receive a local file name containing rules applied | ||
| + | # on referrer field. If parameter is empty, no filter is applied. | ||
| + | # An example of such a file is available in lib/ | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "/ | ||
| + | # Default: "" | ||
| + | # | ||
| + | # WARNING!! Using this feature make AWStats running very slower (5 times slower | ||
| + | # with black list file provided with AWStats ! | ||
| + | # | ||
| + | SkipReferrersBlackList="" | ||
| + | |||
| + | |||
| + | # Include in stats, only accesses from hosts that match one of following | ||
| + | # entries. For example, if you want AWStats to filter access to keep only | ||
| + | # stats for visits from particular hosts, you can add those host names in | ||
| + | # this parameter. | ||
| + | # If DNS lookup is already done in your log file, you must enter here hostname | ||
| + | # criteria, else enter ip address criteria. | ||
| + | # The opposite parameter of " | ||
| + | # Note: Use space between each value. This parameter is not case sensitive. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | OnlyHosts="" | ||
| + | |||
| + | |||
| + | # Include in stats, only accesses from user agent that match one of following | ||
| + | # entries. For example, if you want AWStats to filter access to keep only | ||
| + | # stats for visits from particular browsers, you can add their user agents | ||
| + | # string in this parameter. | ||
| + | # The opposite parameter of " | ||
| + | # Note: Use space between each value. This parameter is not case sensitive. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | OnlyUserAgents="" | ||
| + | |||
| + | |||
| + | # Include in stats, only accesses from authenticated users that match one of | ||
| + | # following entries. For example, if you want AWStats to filter access to keep | ||
| + | # only stats for authenticated users, you can add those users names in | ||
| + | # this parameter. Useful for statistics for per user ftp logs. | ||
| + | # Note: Use space between each value. This parameter is not case sensitive. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "john bob REGEX[^testusers]" | ||
| + | # Default: "" | ||
| + | # | ||
| + | OnlyUsers="" | ||
| + | |||
| + | |||
| + | # Include in stats, only accesses to URLs that match one of following entries. | ||
| + | # For example, if you want AWStats to filter access to keep only stats that | ||
| + | # match a particular string, like a particular directory, you can add this | ||
| + | # directory name in this parameter. | ||
| + | # The opposite parameter of " | ||
| + | # Note: Use space between each value. This parameter is or not case sensitive | ||
| + | # depending on URLNotCaseSensitive parameter. | ||
| + | # Note: You can use regular expression values writing value with REGEX[value]. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | OnlyFiles="" | ||
| + | |||
| + | |||
| + | # Add here a list of kind of url (file extension) that must be counted as | ||
| + | # "Hit only" and not as a " | ||
| + | # image extensions as they are hit downloaded that must be counted but they | ||
| + | # are not viewed pages. URLs with such extensions are not included in the TOP | ||
| + | # Pages/URL report. | ||
| + | # Note: If you want to exclude particular URLs from stats (No Pages and no | ||
| + | # Hits reported), you must use SkipFiles parameter. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "css js class gif jpg jpeg png bmp ico rss xml swf zip arj rar gz z bz2 wav mp3 wma mpg avi" | ||
| + | # Example: "" | ||
| + | # Default: "css js class gif jpg jpeg png bmp ico rss xml swf" | ||
| + | # | ||
| + | NotPageList=" | ||
| + | |||
| + | |||
| + | # By default, AWStats considers that records found in web log file are | ||
| + | # successful hits if HTTP code returned by server is a valid HTTP code (200 | ||
| + | # and 304). Any other code are reported in HTTP status chart. | ||
| + | # Note that HTTP ' | ||
| + | # default in this list as they are not pages seen by a visitor but are | ||
| + | # protocol exchange codes to tell the browser to ask another page. Because | ||
| + | # this other page will be counted and seen with a 200 or 304 code, if you | ||
| + | # add such codes, you will have 2 pages viewed reported for only one in facts. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "200 304 302 305" | ||
| + | # Default: "200 304" | ||
| + | # | ||
| + | ValidHTTPCodes=" | ||
| + | |||
| + | |||
| + | # By default, AWStats considers that records found in mail log file are | ||
| + | # successful mail transfers if field that represent return code in analyzed | ||
| + | # log file match values defined by this parameter. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "1 250 200" | ||
| + | # Default: "1 250" | ||
| + | # | ||
| + | ValidSMTPCodes=" | ||
| + | |||
| + | |||
| + | # Some web servers on some Operating systems (IIS-Windows) consider that a | ||
| + | # login with same value but different case are the same login. To tell AWStats | ||
| + | # to also consider them as one, set this parameter to 1. | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | AuthenticatedUsersNotCaseSensitive=0 | ||
| + | |||
| + | |||
| + | # Some web servers on some Operating systems (IIS-Windows) considers that two | ||
| + | # URLs with same value but different case are the same URL. To tell AWStats to | ||
| + | # also considers them as one, set this parameter to 1. | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | URLNotCaseSensitive=0 | ||
| + | |||
| + | |||
| + | # Keep or remove the anchor string you can find in some URLs. | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | URLWithAnchor=0 | ||
| + | |||
| + | |||
| + | # In URL links, "?" | ||
| + | # / | ||
| + | # However, some servers/ | ||
| + | # their URLs. You can complete this list with all such characters. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: "?;," | ||
| + | # Default: "?;" | ||
| + | # | ||
| + | URLQuerySeparators="?;" | ||
| + | |||
| + | |||
| + | # Keep or remove the query string to the URL in the statistics for individual | ||
| + | # pages. This is primarily used to differentiate between the URLs of dynamic | ||
| + | # pages. If set to 1, mypage.html? | ||
| + | # different pages. | ||
| + | # Warning, when set to 1, memory required to run AWStats is dramatically | ||
| + | # increased if you have a lot of changing URLs (for example URLs with a random | ||
| + | # id inside). Such web sites should not set this option to 1 or use seriously | ||
| + | # the next parameter URLWithQueryWithOnlyFollowingParameters (or eventually  | ||
| + | # URLWithQueryWithoutFollowingParameters). | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: | ||
| + | # 0 - URLs are cleaned from the query string (ie: "/ | ||
| + | # 1 - Full URL with query string is used     (ie: "/ | ||
| + | # Default: 0 | ||
| + | # | ||
| + | URLWithQuery=0 | ||
| + | |||
| + | |||
| + | # When URLWithQuery is on, you will get the full URL with all parameters in | ||
| + | # URL reports. But among thoose parameters, sometimes you don't need a | ||
| + | # particular parameter because it does not identify the page or because it's | ||
| + | # a random ID changing for each access even if URL points to same page. In | ||
| + | # such cases, it is higly recommanded to ask AWStats to keep only parameters | ||
| + | # you need (if you know them) before counting, manipulating and storing URL. | ||
| + | # Enter here list of wanted parameters. For example, with " | ||
| + | # / | ||
| + | # will be reported as 2 hits on / | ||
| + | # This parameter is not used when URLWithQuery is 0 and can't be used with | ||
| + | # URLWithQueryWithoutFollowingParameters. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | URLWithQueryWithOnlyFollowingParameters="" | ||
| + | |||
| + | |||
| + | # When URLWithQuery is on, you will get the full URL with all parameters in | ||
| + | # URL reports. But among thoose parameters, sometimes you don't need a | ||
| + | # particular parameter because it does not identify the page or because it's | ||
| + | # a random ID changing for each access even if URL points to same page. In | ||
| + | # such cases, it is higly recommanded to ask AWStats to remove such parameters | ||
| + | # from the URL before counting, manipulating and storing URL. Enter here list | ||
| + | # of all non wanted parameters. For example if you enter " | ||
| + | # / | ||
| + | # will be reported as 2 hits on / | ||
| + | # This parameter is not used when URLWithQuery is 0 and can't be used with | ||
| + | # URLWithQueryWithOnlyFollowingParameters. | ||
| + | # Change : Effective for new updates only | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | URLWithQueryWithoutFollowingParameters="" | ||
| + | |||
| + | |||
| + | # Keep or remove the query string to the referrer URL in the statistics for | ||
| + | # external referrer pages. This is used to differentiate between the URLs of | ||
| + | # dynamic referrer pages. If set to 1, mypage.html? | ||
| + | # are counted as two different referrer pages. | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: | ||
| + | # 0 - Referrer URLs are cleaned from the query string (ie: "/ | ||
| + | # 1 - Full URL with query string is used      (ie: "/ | ||
| + | # Default: 0 | ||
| + | # | ||
| + | URLReferrerWithQuery=0 | ||
| + | |||
| + | |||
| + | # AWStats can detect setup problems or show you important informations to have | ||
| + | # a better use. Keep this to 1, except if AWStats says you can change it. | ||
| + | # Change : Effective immediatly | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 1 | ||
| + | # | ||
| + | WarningMessages=1 | ||
| + | |||
| + | |||
| + | # When an error occurs, AWStats outputs a message related to errors. If you | ||
| + | # want (in most cases for security reasons) to have no error messages, you | ||
| + | # can set this parameter to your personalized generic message. | ||
| + | # Change : Effective immediatly | ||
| + | # Example: "An error occurred. Contact your Administrator" | ||
| + | # Default: "" | ||
| + | # | ||
| + | ErrorMessages="" | ||
| + | |||
| + | |||
| + | # AWStat can be run with debug=x parameter to output various informations | ||
| + | # to help in debugging or solving troubles. If you want to allow this (not | ||
| + | # enabled by default for security reasons), set this parameter to 0. | ||
| + | # Change : Effective immediatly | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | DebugMessages=0 | ||
| + | |||
| + | |||
| + | # To help you to detect if your log format is good, AWStats reports an error | ||
| + | # if all the first NbOfLinesForCorruptedLog lines have a format that does not | ||
| + | # match the LogFormat parameter. | ||
| + | # However, some worm virus attack on your web server can result in a very high | ||
| + | # number of corrupted lines in your log. So if you experience awstats stop | ||
| + | # because of bad virus records at the beginning of your log file, you can | ||
| + | # increase this parameter (very rare). | ||
| + | # Change : Effective for new updates only | ||
| + | # Default: 50 | ||
| + | # | ||
| + | NbOfLinesForCorruptedLog=50 | ||
| + | |||
| + | |||
| + | # For some particular integration needs, you may want to have CGI links to | ||
| + | # point to another script than awstats.pl. | ||
| + | # Use the name of this script in WrapperScript parameter. | ||
| + | # Change : Effective immediatly | ||
| + | # Example: " | ||
| + | # Example: " | ||
| + | # Default: "" | ||
| + | # | ||
| + | WrapperScript="" | ||
| + | |||
| + | |||
| + | # DecodeUA must be set to 1 if you use Roxen web server. This server converts | ||
| + | # all spaces in user agent field into %20. This make the AWStats robots, OS | ||
| + | # and browsers detection fail in some cases. Just change it to 1 if and only | ||
| + | # if your web server is Roxen. | ||
| + | # Change : Effective for new updates only | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | DecodeUA=0 | ||
| + | |||
| + | |||
| + | # MiscTrackerUrl can be used to make AWStats able to detect some miscellaneous | ||
| + | # things, that can not be tracked on other way, like: | ||
| + | # - Javascript disabled | ||
| + | # - Java enabled | ||
| + | # - Screen size | ||
| + | # - Color depth | ||
| + | # - Macromedia Director plugin | ||
| + | # - Macromedia Shockwave plugin | ||
| + | # - Realplayer G2 plugin | ||
| + | # - QuickTime plugin | ||
| + | # - Mediaplayer plugin | ||
| + | # - Acrobat PDF plugin | ||
| + | # To enable all these features, you must copy the awstats_misc_tracker.js file | ||
| + | # into a /js/ directory stored in your web document root and add the following | ||
| + | # HTML code at the end of your index page (but before </ | ||
| + | # | ||
| + | # <script type=" | ||
| + | # < | ||
| + | # | ||
| + | # If code is not added in index page, all those detection capabilities will be | ||
| + | # disabled. You must also check that ShowScreenSizeStats and ShowMiscStats | ||
| + | # parameters are set to 1 to make results appear in AWStats report page. | ||
| + | # If you want to use another directory than /js/, you must also change the | ||
| + | # awstatsmisctrackerurl variable into the awstats_misc_tracker.js file. | ||
| + | # Change : Effective for new updates only. | ||
| + | # Possible value: URL of javascript tracker file added in your HTML code. | ||
| + | # Default: "/ | ||
| + | # | ||
| + | MiscTrackerUrl="/ | ||
| + | |||
| + | |||
| + | |||
| + | # | ||
| + | # OPTIONAL ACCURACY SETUP SECTION (Not required but increase AWStats features) | ||
| + | # | ||
| + | |||
| + | # The following values allow you to define accuracy of AWStats entities | ||
| + | # (robots, browsers, os, referers, file types) detection. | ||
| + | # It might be a good idea for large web sites or ISP that provides AWStats to | ||
| + | # high number of customers, to set this parameter to 1 (or 0), instead of 2. | ||
| + | # Possible values: | ||
| + | # 0 = No detection, | ||
| + | #    1      = Medium/ | ||
| + | # 2 = Full detection | ||
| + | # Change : Effective for new updates only | ||
| + | # Note   : LevelForBrowsersDetection can also accept value " | ||
| + | # enable detailed detection of phone/pda browsers. | ||
| + | # Default: 2 (0 for LevelForWormsDetection) | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LevelForBrowsersDetection=2 | ||
| + | LevelForBrowsersDetection=0  | ||
| + | # 2 reduces AWStats speed by 2% | ||
| + | # allphones reduces AWStats speed by 5% | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LevelForOSDetection=2 | ||
| + | LevelForOSDetection=0  | ||
| + | # 2 reduces AWStats speed by 3% | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LevelForRefererAnalyze=2 | ||
| + | LevelForRefererAnalyze=0  | ||
| + | # 2 reduces AWStats speed by 14% | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LevelForRobotsDetection=2 | ||
| + | LevelForRobotsDetection=0  | ||
| + | # 2 reduces AWStats speed by 2.5% | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LevelForSearchEnginesDetection=2 | ||
| + | LevelForSearchEnginesDetection=0  | ||
| + | # 2 reduces AWStats speed by 9% | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LevelForKeywordsDetection=2 | ||
| + | LevelForKeywordsDetection=0  | ||
| + | # 2 reduces AWStats speed by 1% | ||
| + | # Django : 2012-07-03 | ||
| + | # default: LevelForFileTypesDetection=2 | ||
| + | LevelForFileTypesDetection=0  | ||
| + | # 2 reduces AWStats speed by 1% | ||
| + | LevelForWormsDetection=0  | ||
| + | # 2 reduces AWStats speed by 15% | ||
| + | |||
| + | |||
| + | |||
| + | # | ||
| + | # OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features) | ||
| + | # | ||
| + | |||
| + | # When you use AWStats as a CGI, you can have the reports shown in HTML frames. | ||
| + | # Frames are only available for report viewed dynamically. When you build | ||
| + | # pages from command line, this option is not used and no frames are built. | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 1 | ||
| + | # | ||
| + | UseFramesWhenCGI=1 | ||
| + | |||
| + | |||
| + | # This parameter asks your browser to open detailed reports into a different | ||
| + | # window than the main page. | ||
| + | # Possible values: | ||
| + | # 0 - Open all in same browser window | ||
| + | # 1 - Open detailed reports in another window except if using frames | ||
| + | # 2 - Open always in a different window even if reports are framed | ||
| + | # Default: 1 | ||
| + | # | ||
| + | DetailedReportsOnNewWindows=1 | ||
| + | |||
| + | |||
| + | # You can add, in the HTML report page, a cache lifetime (in seconds) that | ||
| + | # will be returned to the browser in HTTP header answer by server. | ||
| + | # This parameter is not used when reports are built with -staticlinks option. | ||
| + | # Example: 3600 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: Expires=3600 | ||
| + | Expires=0 | ||
| + | |||
| + | |||
| + | # To avoid too large web pages, you can ask AWStats to limit number of rows of | ||
| + | # all reported charts to this number when no other limits apply. | ||
| + | # Default: 1000 | ||
| + | # | ||
| + | MaxRowsInHTMLOutput=1000 | ||
| + | |||
| + | |||
| + | # Set your primary language (ISO-639-1 language codes). | ||
| + | # Possible values: | ||
| + | #  Albanian=al, | ||
| + | #  Chinese (Taiwan)=tw, | ||
| + | #  Danish=dk, Dutch=nl, English=en, Estonian=et, | ||
| + | #  French=fr, Galician=gl, | ||
| + | #  Icelandic=is, | ||
| + | #  Latvian=lv, Norwegian (Nynorsk)=nn, | ||
| + | #  Portuguese=pt, | ||
| + | #  Serbian=sr, Slovak=sk, Slovenian=si, | ||
| + | #  Ukrainian=ua, | ||
| + | # First available language accepted by browser=auto | ||
| + | # Default: " | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: Lang=" | ||
| + | Lang=" | ||
| + | |||
| + | |||
| + | # Set the location of language files. | ||
| + | # Example: "/ | ||
| + | # Default: " | ||
| + | # | ||
| + | DirLang=" | ||
| + | |||
| + | |||
| + | # Show menu header with reports' | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 1 | ||
| + | # | ||
| + | ShowMenu=1 | ||
| + | |||
| + | |||
| + | # You choose here which reports you want to see in the main page and what you | ||
| + | # want to see in those reports. | ||
| + | # Possible values: | ||
| + | # 0 - Report is not shown at all | ||
| + | # 1 - Report is shown in main page with an entry in menu and default columns | ||
| + | # XYZ - Report shows column informations defined by code X,Y,Z... | ||
| + | #        | ||
| + | # U = Unique visitors | ||
| + | # V = Visits | ||
| + | # P = Number of pages | ||
| + | # H = Number of hits (or mails) | ||
| + | # B = Bandwith (or total mail size for mail logs) | ||
| + | # L = Last access date | ||
| + | # E = Entry pages | ||
| + | # X = Exit pages | ||
| + | #        C = Web compression (mod_gzip, | ||
| + | # M = Average mail size (mail logs) | ||
| + | # | ||
| + | |||
| + | # Show monthly summary | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: UVPHB, Possible column codes: UVPHB | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowSummary=UVPHB | ||
| + | ShowSummary=HB | ||
| + | |||
| + | # Show monthly chart | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: UVPHB, Possible column codes: UVPHB | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowMonthStats=UVPHB | ||
| + | ShowMonthStats=HB | ||
| + | |||
| + | # Show days of month chart | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: VPHB, Possible column codes: VPHB | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowDaysOfMonthStats=VPHB | ||
| + | ShowDaysOfMonthStats=HB | ||
| + | |||
| + | # Show days of week chart | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: PHB, Possible column codes: PHB | ||
| + | # Default: VPHB, Possible column codes: VPHB | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowDaysOfWeekStats=PHB | ||
| + | ShowDaysOfWeekStats=HB | ||
| + | |||
| + | # Show hourly chart | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: PHB, Possible column codes: PHB | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowHoursStats=PHB | ||
| + | ShowHoursStats=HB | ||
| + | |||
| + | # Show domains/ | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: PHB, Possible column codes: PHB | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowDomainsStats=PHB | ||
| + | ShowDomainsStats=0 | ||
| + | |||
| + | # Show hosts chart | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: PHBL, Possible column codes: PHBL | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowHostsStats=PHBL | ||
| + | ShowHostsStats=HBL | ||
| + | |||
| + | # Show authenticated users chart | ||
| + | # Context: Web, Streaming, Ftp | ||
| + | # Default: 0, Possible column codes: PHBL | ||
| + | ShowAuthenticatedUsers=0 | ||
| + | |||
| + | # Show robots chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: HBL, Possible column codes: HBL | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowRobotsStats=HBL | ||
| + | ShowRobotsStats=0 | ||
| + | |||
| + | # Show worms chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: 0 (If set to other than 0, see also LevelForWormsDetection), | ||
| + | ShowWormsStats=0 | ||
| + | |||
| + | # Show email senders chart (For use when analyzing mail log files) | ||
| + | # Context: Mail | ||
| + | # Default: 0, Possible column codes: HBML | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowEMailSenders=0 | ||
| + | ShowEMailSenders=HBML | ||
| + | |||
| + | # Show email receivers chart (For use when analyzing mail log files) | ||
| + | # Context: Mail | ||
| + | # Default: 0, Possible column codes: HBML | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowEMailReceivers=0 | ||
| + | ShowEMailReceivers=HBML | ||
| + | |||
| + | # Show session chart | ||
| + | # Context: Web, Streaming, Ftp | ||
| + | # Default: 1, Possible column codes: None | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowSessionsStats=1 | ||
| + | ShowSessionsStats=0 | ||
| + | |||
| + | # Show pages-url chart. | ||
| + | # Context: Web, Streaming, Ftp | ||
| + | # Default: PBEX, Possible column codes: PBEX | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowPagesStats=PBEX | ||
| + | ShowPagesStats=0 | ||
| + | |||
| + | # Show file types chart. | ||
| + | # Context: Web, Streaming, Ftp | ||
| + | # Default: HB, Possible column codes: HBC | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowFileTypesStats=HB | ||
| + | ShowFileTypesStats=0 | ||
| + | |||
| + | # Show file size chart (Not yet available) | ||
| + | # Context: Web, Streaming, Mail, Ftp | ||
| + | # Default: 1, Possible column codes: None | ||
| + | ShowFileSizesStats=0 | ||
| + | |||
| + | # Show downloads chart. | ||
| + | # Context: Web, Streaming, Ftp | ||
| + | # Default: HB, Possible column codes: HB | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowDownloadsStats=HB | ||
| + | ShowDownloadsStats=0 | ||
| + | |||
| + | # Show operating systems chart | ||
| + | # Context: Web, Streaming, Ftp | ||
| + | # Default: 1, Possible column codes: None | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowOSStats=1 | ||
| + | ShowOSStats=0 | ||
| + | |||
| + | # Show browsers chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: 1, Possible column codes: None | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowBrowsersStats=1 | ||
| + | ShowBrowsersStats=0 | ||
| + | |||
| + | # Show screen size chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: 0 (If set to 1, see also MiscTrackerUrl), | ||
| + | ShowScreenSizeStats=0 | ||
| + | |||
| + | # Show origin chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: PH, Possible column codes: PH | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowOriginStats=PH | ||
| + | ShowOriginStats=0 | ||
| + | |||
| + | # Show keyphrases chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: 1, Possible column codes: None | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowKeyphrasesStats=1 | ||
| + | ShowKeyphrasesStats=0 | ||
| + | |||
| + | # Show keywords chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: 1, Possible column codes: None | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowKeywordsStats=1 | ||
| + | ShowKeywordsStats=0 | ||
| + | |||
| + | # Show misc chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: a (See also MiscTrackerUrl parameter), Possible column codes: anjdfrqwp | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowMiscStats=a | ||
| + | ShowMiscStats=0 | ||
| + | |||
| + | # Show http errors chart | ||
| + | # Context: Web, Streaming | ||
| + | # Default: 1, Possible column codes: None | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowHTTPErrorsStats=1 | ||
| + | ShowHTTPErrorsStats=0 | ||
| + | |||
| + | # Show smtp errors chart (For use when analyzing mail log files) | ||
| + | # Context: Mail | ||
| + | # Default: 0, Possible column codes: None | ||
| + | # Django : 2012-07-03 | ||
| + | # default: ShowSMTPErrorsStats=0 | ||
| + | ShowSMTPErrorsStats=1 | ||
| + | |||
| + | # Show the cluster report (Your LogFormat must contains the %cluster tag) | ||
| + | # Context: Web, Streaming, Ftp | ||
| + | # Default: 0, Possible column codes: PHB | ||
| + | ShowClusterStats=0 | ||
| + | |||
| + | |||
| + | # Some graphical reports are followed by the data array of values. | ||
| + | # If you don't want this array (to reduce the report size for example), you | ||
| + | # can set thoose options to 0. | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 1 | ||
| + | # | ||
| + | # Data array values for the ShowMonthStats report | ||
| + | AddDataArrayMonthStats=1 | ||
| + | # Data array values for the ShowDaysOfMonthStats report | ||
| + | AddDataArrayShowDaysOfMonthStats=1 | ||
| + | # Data array values for the ShowDaysOfWeekStats report | ||
| + | AddDataArrayShowDaysOfWeekStats=1 | ||
| + | # Data array values for the ShowHoursStats report | ||
| + | AddDataArrayShowHoursStats=1 | ||
| + | |||
| + | |||
| + | # In the Origin chart, you have stats on where your hits came from. You can | ||
| + | # include hits on pages that come from pages of same sites in this chart. | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 0 | ||
| + | # | ||
| + | IncludeInternalLinksInOriginSection=0 | ||
| + | |||
| + | |||
| + | # The following parameters can be used to choose the maximum number of lines | ||
| + | # shown for the particular following reports. | ||
| + | # | ||
| + | # Stats by countries/ | ||
| + | MaxNbOfDomain = 10 | ||
| + | MinHitDomain  | ||
| + | # Stats by hosts | ||
| + | MaxNbOfHostsShown = 10 | ||
| + | MinHitHost  | ||
| + | # Stats by authenticated users | ||
| + | MaxNbOfLoginShown = 10 | ||
| + | MinHitLogin  | ||
| + | # Stats by robots | ||
| + | MaxNbOfRobotShown = 10 | ||
| + | MinHitRobot  | ||
| + | # Stats for Downloads | ||
| + | MaxNbOfDownloadsShown = 10 | ||
| + | MinHitDownloads = 1 | ||
| + | # Stats by pages | ||
| + | MaxNbOfPageShown = 10 | ||
| + | MinHitFile  | ||
| + | # Stats by OS | ||
| + | MaxNbOfOsShown = 10 | ||
| + | MinHitOs  | ||
| + | # Stats by browsers | ||
| + | MaxNbOfBrowsersShown = 10 | ||
| + | MinHitBrowser = 1 | ||
| + | # Stats by screen size | ||
| + | MaxNbOfScreenSizesShown = 5 | ||
| + | MinHitScreenSize = 1 | ||
| + | # Stats by window size (following 2 parameters are not yet used) | ||
| + | MaxNbOfWindowSizesShown = 5 | ||
| + | MinHitWindowSize = 1 | ||
| + | # Stats by referers | ||
| + | MaxNbOfRefererShown = 10 | ||
| + | MinHitRefer  | ||
| + | # Stats for keyphrases | ||
| + | MaxNbOfKeyphrasesShown = 10 | ||
| + | MinHitKeyphrase = 1 | ||
| + | # Stats for keywords | ||
| + | MaxNbOfKeywordsShown = 10 | ||
| + | MinHitKeyword = 1 | ||
| + | # Stats for sender or receiver emails | ||
| + | MaxNbOfEMailsShown = 20 | ||
| + | MinHitEMail  | ||
| + | |||
| + | |||
| + | # Choose if you want the week report to start on sunday or monday | ||
| + | # Possible values: | ||
| + | # 0 - Week starts on sunday | ||
| + | # 1 - Week starts on monday | ||
| + | # Default: 1 | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: FirstDayOfWeek=0 | ||
| + | FirstDayOfWeek=1 | ||
| + | |||
| + | |||
| + | # List of visible flags that link to other language translations. | ||
| + | # See Lang parameter for list of allowed flag/ | ||
| + | # If you don't want any flag link, set ShowFlagLinks to "" | ||
| + | # This parameter is used only if ShowMenu parameter is set to 1. | ||
| + | # Possible values: "" | ||
| + | # Example: "en es fr nl de" | ||
| + | # Default: "" | ||
| + | # | ||
| + | ShowFlagLinks="" | ||
| + | |||
| + | |||
| + | # Each URL, shown in stats report views, are links you can click. | ||
| + | # Possible values: 0 or 1 | ||
| + | # Default: 1 | ||
| + | # | ||
| + | ShowLinksOnUrl=1 | ||
| + | |||
| + | |||
| + | # When AWStats builds HTML links in its report pages, it starts those links | ||
| + | # with " | ||
| + | # here the root of all your HTTPS links. If all your site is a SSL web site, | ||
| + | # just enter "/" | ||
| + | # This parameter is not used if ShowLinksOnUrl is 0. | ||
| + | # Example: "/ | ||
| + | # Example: "/" | ||
| + | # Default: "" | ||
| + | # | ||
| + | UseHTTPSLinkForUrl="" | ||
| + | |||
| + | |||
| + | # Maximum length of URL part shown on stats page (number of characters). | ||
| + | # This affects only URL visible text, links still work. | ||
| + | # Default: 64 | ||
| + | # | ||
| + | MaxLengthOfShownURL=64 | ||
| + | |||
| + | |||
| + | # You can enter HTML code that will be added at the top of AWStats reports. | ||
| + | # Default: "" | ||
| + | # | ||
| + | HTMLHeadSection="" | ||
| + | |||
| + | |||
| + | # You can enter HTML code that will be added at the end of AWStats reports. | ||
| + | # Great to add advert ban. | ||
| + | # Default: "" | ||
| + | # | ||
| + | HTMLEndSection="" | ||
| + | |||
| + | |||
| + | # By default AWStats page contains meta tag robots=noindex, | ||
| + | # If you want to have your statistics to be indexed, set this option to 1. | ||
| + | # Default: 0 | ||
| + | # | ||
| + | MetaRobot=0 | ||
| + | |||
| + | |||
| + | # You can set Logo and LogoLink to use your own logo. | ||
| + | # Logo must be the name of image file (must be in $DirIcons/ | ||
| + | # LogoLink is the expected URL when clicking on Logo. | ||
| + | # Default: " | ||
| + | # | ||
| + | Logo=" | ||
| + | LogoLink=" | ||
| + | |||
| + | |||
| + | # Value of maximum bar width/ | ||
| + | # Default: 260/90 | ||
| + | # | ||
| + | BarWidth  | ||
| + | BarHeight  | ||
| + | |||
| + | |||
| + | # You can ask AWStats to use a particular CSS (Cascading Style Sheet) to | ||
| + | # change its look. To create a style sheet, you can use samples provided with | ||
| + | # AWStats in wwwroot/css directory. | ||
| + | # Example: "/ | ||
| + | # Example: "/ | ||
| + | # Default: "" | ||
| + | # | ||
| + | StyleSheet="" | ||
| + | |||
| + | |||
| + | # Those color parameters can be used (if StyleSheet parameter is not used) | ||
| + | # to change AWStats look. | ||
| + | # Example: color_name=" | ||
| + | # | ||
| + | color_Background=" | ||
| + | color_TableBGTitle=" | ||
| + | color_TableTitle=" | ||
| + | color_TableBG=" | ||
| + | color_TableRowTitle=" | ||
| + | color_TableBGRowTitle=" | ||
| + | color_TableBorder=" | ||
| + | color_text=" | ||
| + | color_textpercent=" | ||
| + | color_titletext=" | ||
| + | color_weekend=" | ||
| + | color_link=" | ||
| + | color_hover=" | ||
| + | color_u=" | ||
| + | color_v=" | ||
| + | color_p=" | ||
| + | color_h=" | ||
| + | color_k=" | ||
| + | color_s=" | ||
| + | color_e=" | ||
| + | color_x=" | ||
| + | |||
| + | |||
| + | |||
| + | # | ||
| + | # PLUGINS | ||
| + | # | ||
| + | |||
| + | # Add here all plugin files you want to load. | ||
| + | # Plugin files must be .pm files stored in ' | ||
| + | # Uncomment LoadPlugin lines to enable a plugin after checking that perl | ||
| + | # modules required by the plugin are installed. | ||
| + | |||
| + | # PLUGIN: Tooltips | ||
| + | # REQUIRED MODULES: None | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # NOTE: This will increased HTML report pages size, thus server load and bandwidth. | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: # | ||
| + | LoadPlugin=" | ||
| + | |||
| + | # PLUGIN: DecodeUTFKeys | ||
| + | # REQUIRED MODULES: Encode and URI::Escape | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # keywords/ | ||
| + | # referer search engine. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | |||
| + | # PLUGIN: IPv6 | ||
| + | # PARAMETERS: None | ||
| + | # REQUIRED MODULES: Net::IP and Net::DNS | ||
| + | # DESCRIPTION: | ||
| + | # lookup on IPv6 addresses. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: HashFiles | ||
| + | # REQUIRED MODULES: Storable | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # This increases DNS cache files loading speed, above all for very large web sites. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | |||
| + | # PLUGIN: UserInfo | ||
| + | # REQUIRED MODULES: None | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # authenticated user reports for each login value. | ||
| + | # A text file called userinfo.myconfig.txt, | ||
| + | # second is text to show, separated by a tab char) must be created in DirData | ||
| + | # directory. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: HostInfo | ||
| + | # REQUIRED MODULES: Net::XWhois | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # info on host (like whois records). | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: # | ||
| + | LoadPlugin=" | ||
| + | |||
| + | # PLUGIN: ClusterInfo | ||
| + | # REQUIRED MODULES: None | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # number. A text file called clusterinfo.myconfig.txt, | ||
| + | # cluster number, second is text to show) separated by a tab char. must be | ||
| + | # created into DirData directory. | ||
| + | # Note this plugin is useless if ShowClusterStats is set to 0 or if you don't | ||
| + | # use a personalized log format that contains %cluster tag. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: UrlAliases | ||
| + | # REQUIRED MODULES: None | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # A text file called urlalias.myconfig.txt, | ||
| + | # second is text to show, separated by a tab char) must be created into | ||
| + | # DirData directory. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: TimeHiRes | ||
| + | # REQUIRED MODULES: Time::HiRes (if Perl < 5.8) | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: TimeZone | ||
| + | # REQUIRED MODULES: Time::Local | ||
| + | # PARAMETERS: [timezone offset] | ||
| + | # DESCRIPTION: | ||
| + | # This plugin reduces AWStats speed of 10% !!!!!!! | ||
| + | # LoadPlugin=" | ||
| + | # LoadPlugin=" | ||
| + | # LoadPlugin=" | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: Rawlog | ||
| + | # REQUIRED MODULES: None | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # content of current log files. A filter is also available. | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: GraphApplet | ||
| + | # REQUIRED MODULES: None | ||
| + | # PARAMETERS: [CSS classes to override] | ||
| + | # DESCRIPTION: | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: GraphGoogleChartAPI | ||
| + | # REQUIRED MODULES: None | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # in HTML reports. If country data is available and more than one country has hits, | ||
| + | # a map will be generated using Google Visualizations. | ||
| + | # Note: The machine where reports are displayed must have Internet access for the | ||
| + | # charts to be generated. The only data sent to Google includes the statistic numbers,  | ||
| + | # legend names and country names. | ||
| + | # Warning: This plugin is not compatible with option BuildReportFormat=xhtml.  | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: # | ||
| + | LoadPlugin=" | ||
| + | |||
| + | # PLUGIN: GeoIPfree | ||
| + | # REQUIRED MODULES: Geo::IPfree version 0.2+ (from Graciliano M.P.) | ||
| + | # PARAMETERS: None | ||
| + | # DESCRIPTION: | ||
| + | # This plugin is useless for intranet only log files. | ||
| + | # Note: You must choose between using this plugin (need Perl Geo::IPfree | ||
| + | # module, database is free but not up to date) or the GeoIP plugin (need | ||
| + | # Perl Geo::IP module from Maxmind, database is also free and up to date). | ||
| + | # Note: Activestate provide a corrupted version of Geo::IPfree 0.2 Perl | ||
| + | # module, so install it from elsewhere (from www.cpan.org for example). | ||
| + | # This plugin reduces AWStats speed by up to 10% ! | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # MAXMIND GEO IP MODULES: Please see documentation for notes on all Maxmind modules | ||
| + | |||
| + | # PLUGIN: GeoIP | ||
| + | # REQUIRED MODULES: Geo::IP or Geo:: | ||
| + | # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/ | ||
| + | # DESCRIPTION: | ||
| + | # table with country name | ||
| + | # Replace spaces in the path of geoip data file with string " | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: # | ||
| + | LoadPlugin=" | ||
| + | |||
| + | # PLUGIN: GeoIP_City_Maxmind | ||
| + | # REQUIRED MODULES: Geo::IP or Geo:: | ||
| + | # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/ | ||
| + | # DESCRIPTION: | ||
| + | # and hits by city including regions. | ||
| + | # Replace spaces in the path of geoip data file with string " | ||
| + | # | ||
| + | # Django : 2012-07-03 | ||
| + | # default: # | ||
| + | LoadPlugin=" | ||
| + | |||
| + | # PLUGIN: GeoIP_ASN_Maxmind | ||
| + | # REQUIRED MODULES: Geo::IP or Geo:: | ||
| + | # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/ | ||
| + | # DESCRIPTION: | ||
| + | # This plugin can display some ISP information if included in the database. You can also provide  | ||
| + | # a link that will be used to lookup additional registration data. Put the link at the end of | ||
| + | # the parameter string and the report page will include the link with the full AS number at the end. | ||
| + | # Replace spaces in the path of geoip data file with string " | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: GeoIP_Region_Maxmind | ||
| + | # REQUIRED MODULES: Geo::IP or Geo:: | ||
| + | # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/ | ||
| + | # DESCRIPTION: | ||
| + | # Canada can be detected. | ||
| + | # Replace spaces in the path of geoip data file with string " | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: GeoIP_ISP_Maxmind | ||
| + | # REQUIRED MODULES: Geo::IP or Geo:: | ||
| + | # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/ | ||
| + | # DESCRIPTION: | ||
| + | # Replace spaces in the path of geoip data file with string " | ||
| + | # | ||
| + | # | ||
| + | |||
| + | # PLUGIN: GeoIP_Org_Maxmind | ||
| + | # REQUIRED MODULES: Geo::IP or Geo:: | ||
| + | # PARAMETERS: [GEOIP_STANDARD | GEOIP_MEMORY_CACHE] [/ | ||
| + | # DESCRIPTION: | ||
| + | # Replace spaces in the path of geoip data file with string " | ||
| + | # | ||
| + | # | ||
| + | |||
| + | |||
| + | # | ||
| + | # EXTRA SECTIONS | ||
| + | # | ||
| + | |||
| + | # You can define your own charts, you choose here what are rows and columns | ||
| + | # keys. This feature is particularly useful for marketing purpose, tracking | ||
| + | # products orders for example. | ||
| + | # For this, edit all parameters of Extra section. Each set of parameter is a | ||
| + | # different chart. For several charts, duplicate section changing the number. | ||
| + | # Note: Each Extra section reduces AWStats speed by 8%. | ||
| + | # | ||
| + | # WARNING: A wrong setup of Extra section might result in too large arrays | ||
| + | # that will consume all your memory, making AWStats unusable after several | ||
| + | # updates, so be sure to setup it correctly. | ||
| + | # In most cases, you don't need this feature. | ||
| + | # | ||
| + | # ExtraSectionNameX is title of your personalized chart. | ||
| + | # ExtraSectionCodeFilterX is list of codes the record code field must match. | ||
| + | # Put an empty string for no test on code. | ||
| + | # ExtraSectionConditionX are conditions you can use to count or not the hit, | ||
| + | # Use one of the field condition | ||
| + | #    | ||
| + | #   and a regex to match, after a coma. Use " | ||
| + | # ExtraSectionFirstColumnTitleX is the first column title of the chart. | ||
| + | # ExtraSectionFirstColumnValuesX is a string to tell AWStats which field to | ||
| + | #    | ||
| + | #    | ||
| + | # and how to extract the value (using regex syntax). Each different value | ||
| + | # found will appear in first column of report on a different row. Be sure | ||
| + | # that list of different possible values will not grow indefinitely. | ||
| + | # ExtraSectionFirstColumnFormatX is the string used to write value. | ||
| + | # ExtraSectionStatTypesX are things you want to count. You can use standard | ||
| + | # code letters (P for pages,H for hits,B for bandwidth,L for last access). | ||
| + | # ExtraSectionAddAverageRowX add a row at bottom of chart with average values. | ||
| + | # ExtraSectionAddSumRowX add a row at bottom of chart with sum values. | ||
| + | # MaxNbOfExtraX is maximum number of rows shown in chart. | ||
| + | # MinHitExtraX is minimum number of hits required to be shown in chart. | ||
| + | # | ||
| + | |||
| + | # Example to report the 20 products the most ordered by " | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | |||
| + | |||
| + | # There is also a global parameter ExtraTrackedRowsLimit that limits the | ||
| + | # number of possible rows an ExtraSection can report. This parameter is | ||
| + | # here to protect too much memory use when you make a bad setup in your | ||
| + | # ExtraSection. It applies to all ExtraSection independently meaning that | ||
| + | # none ExtraSection can report more rows than value defined by ExtraTrackedRowsLimit. | ||
| + | # If you know an ExtraSection will report more rows than its value, you should | ||
| + | # increase this parameter or AWStats will stop with an error. | ||
| + | # Example: 2000 | ||
| + | # Default: 500 | ||
| + | # | ||
| + | ExtraTrackedRowsLimit=500 | ||
| + | |||
| + | |||
| + | # | ||
| + | # INCLUDES | ||
| + | # | ||
| + | |||
| + | # You can include other config files using the directive with the name of the | ||
| + | # config file. | ||
| + | # This is particularly useful for users who have a lot of virtual servers, so | ||
| + | # a lot of config files and want to maintain common values in only one file. | ||
| + | # Note that when a variable is defined both in a config file and in an | ||
| + | # included file, AWStats will use the last value read for parameters that | ||
| + | # contains one value and AWStats will concat all values from both files for | ||
| + | # parameters that are lists of values. | ||
| + | # | ||
| + | |||
| + | #Include "" | ||
| + | |||
| + | </ | ||
| + | |||
| + | Zusammengefasst sieht dann unsere Konfigurationdatei entsprechend wie folgt aus: | ||
| + |    # egrep -v ' | ||
| + | |||
| + | <code bash> | ||
| + | LogFile=" | ||
| + | LogType=M | ||
| + | LogFormat=" | ||
| + | LogSeparator=" | ||
| + | SiteDomain=" | ||
| + | HostAliases=„localhost 127.0.0.1 REGEX[nausch\.org$] REGEX[www\.nausch\.org$]“ | ||
| + | DNSLookup=2 | ||
| + | DirData="/ | ||
| + | DirCgi="/ | ||
| + | DirIcons="/ | ||
| + | AllowToUpdateStatsFromBrowser=1 | ||
| + | AllowFullYearView=2 | ||
| + | EnableLockForUpdate=1 | ||
| + | DNSStaticCacheFile=" | ||
| + | DNSLastUpdateCacheFile=" | ||
| + | SkipDNSLookupFor="" | ||
| + | AllowAccessFromWebToAuthenticatedUsersOnly=0 | ||
| + | AllowAccessFromWebToFollowingAuthenticatedUsers="" | ||
| + | AllowAccessFromWebToFollowingIPAddresses="" | ||
| + | CreateDirDataIfNotExists=0 | ||
| + | BuildHistoryFormat=text | ||
| + | BuildReportFormat=html | ||
| + | SaveDatabaseFilesWithPermissionsForEveryone=1 | ||
| + | PurgeLogFile=0 | ||
| + | ArchiveLogRecords=0 | ||
| + | KeepBackupOfHistoricFiles=1 | ||
| + | DefaultFile=" | ||
| + | SkipHosts="" | ||
| + | SkipUserAgents="" | ||
| + | SkipFiles="" | ||
| + | SkipReferrersBlackList="" | ||
| + | OnlyHosts="" | ||
| + | OnlyUserAgents="" | ||
| + | OnlyUsers="" | ||
| + | OnlyFiles="" | ||
| + | NotPageList=" | ||
| + | ValidHTTPCodes=" | ||
| + | ValidSMTPCodes=" | ||
| + | AuthenticatedUsersNotCaseSensitive=0 | ||
| + | URLNotCaseSensitive=0 | ||
| + | URLWithAnchor=0 | ||
| + | URLQuerySeparators="?;" | ||
| + | URLWithQuery=0 | ||
| + | URLWithQueryWithOnlyFollowingParameters="" | ||
| + | URLWithQueryWithoutFollowingParameters="" | ||
| + | URLReferrerWithQuery=0 | ||
| + | WarningMessages=1 | ||
| + | ErrorMessages="" | ||
| + | DebugMessages=0 | ||
| + | NbOfLinesForCorruptedLog=50 | ||
| + | WrapperScript="" | ||
| + | DecodeUA=0 | ||
| + | MiscTrackerUrl="/ | ||
| + | LevelForBrowsersDetection=0  | ||
| + | # 2 reduces AWStats speed by 2% | ||
| + | # allphones reduces AWStats speed by 5% | ||
| + | LevelForOSDetection=0  | ||
| + | # 2 reduces AWStats speed by 3% | ||
| + | LevelForRefererAnalyze=0  | ||
| + | # 2 reduces AWStats speed by 14% | ||
| + | LevelForRobotsDetection=0  | ||
| + | # 2 reduces AWStats speed by 2.5% | ||
| + | LevelForSearchEnginesDetection=0  | ||
| + | # 2 reduces AWStats speed by 9% | ||
| + | LevelForKeywordsDetection=0  | ||
| + | # 2 reduces AWStats speed by 1% | ||
| + | LevelForFileTypesDetection=0  | ||
| + | # 2 reduces AWStats speed by 1% | ||
| + | LevelForWormsDetection=0  | ||
| + | # 2 reduces AWStats speed by 15% | ||
| + | UseFramesWhenCGI=1 | ||
| + | DetailedReportsOnNewWindows=1 | ||
| + | Expires=0 | ||
| + | MaxRowsInHTMLOutput=1000 | ||
| + | Lang=" | ||
| + | DirLang=" | ||
| + | ShowMenu=1 | ||
| + | ShowSummary=HB | ||
| + | ShowMonthStats=HB | ||
| + | ShowDaysOfMonthStats=HB | ||
| + | ShowDaysOfWeekStats=HB | ||
| + | ShowHoursStats=HB | ||
| + | ShowDomainsStats=0 | ||
| + | ShowHostsStats=HBL | ||
| + | ShowAuthenticatedUsers=0 | ||
| + | ShowRobotsStats=0 | ||
| + | ShowWormsStats=0 | ||
| + | ShowEMailSenders=HBML | ||
| + | ShowEMailReceivers=HBML | ||
| + | ShowSessionsStats=0 | ||
| + | ShowPagesStats=0 | ||
| + | ShowFileTypesStats=0 | ||
| + | ShowFileSizesStats=0 | ||
| + | ShowDownloadsStats=0 | ||
| + | ShowOSStats=0 | ||
| + | ShowBrowsersStats=0 | ||
| + | ShowScreenSizeStats=0 | ||
| + | ShowOriginStats=0 | ||
| + | ShowKeyphrasesStats=0 | ||
| + | ShowKeywordsStats=0 | ||
| + | ShowMiscStats=0 | ||
| + | ShowHTTPErrorsStats=0 | ||
| + | ShowSMTPErrorsStats=1 | ||
| + | ShowClusterStats=0 | ||
| + | AddDataArrayMonthStats=1 | ||
| + | AddDataArrayShowDaysOfMonthStats=1 | ||
| + | AddDataArrayShowDaysOfWeekStats=1 | ||
| + | AddDataArrayShowHoursStats=1 | ||
| + | IncludeInternalLinksInOriginSection=0 | ||
| + | MaxNbOfDomain = 10 | ||
| + | MinHitDomain  | ||
| + | MaxNbOfHostsShown = 10 | ||
| + | MinHitHost  | ||
| + | MaxNbOfLoginShown = 10 | ||
| + | MinHitLogin  | ||
| + | MaxNbOfRobotShown = 10 | ||
| + | MinHitRobot  | ||
| + | MaxNbOfDownloadsShown = 10 | ||
| + | MinHitDownloads = 1 | ||
| + | MaxNbOfPageShown = 10 | ||
| + | MinHitFile  | ||
| + | MaxNbOfOsShown = 10 | ||
| + | MinHitOs  | ||
| + | MaxNbOfBrowsersShown = 10 | ||
| + | MinHitBrowser = 1 | ||
| + | MaxNbOfScreenSizesShown = 5 | ||
| + | MinHitScreenSize = 1 | ||
| + | MaxNbOfWindowSizesShown = 5 | ||
| + | MinHitWindowSize = 1 | ||
| + | MaxNbOfRefererShown = 10 | ||
| + | MinHitRefer  | ||
| + | MaxNbOfKeyphrasesShown = 10 | ||
| + | MinHitKeyphrase = 1 | ||
| + | MaxNbOfKeywordsShown = 10 | ||
| + | MinHitKeyword = 1 | ||
| + | MaxNbOfEMailsShown = 20 | ||
| + | MinHitEMail  | ||
| + | FirstDayOfWeek=1 | ||
| + | ShowFlagLinks="" | ||
| + | ShowLinksOnUrl=1 | ||
| + | UseHTTPSLinkForUrl="" | ||
| + | MaxLengthOfShownURL=64 | ||
| + | HTMLHeadSection="" | ||
| + | HTMLEndSection="" | ||
| + | MetaRobot=0 | ||
| + | Logo=" | ||
| + | LogoLink=" | ||
| + | BarWidth  | ||
| + | BarHeight  | ||
| + | StyleSheet="" | ||
| + | color_Background=" | ||
| + | color_TableBGTitle=" | ||
| + | color_TableTitle=" | ||
| + | color_TableBG=" | ||
| + | color_TableRowTitle=" | ||
| + | color_TableBGRowTitle=" | ||
| + | color_TableBorder=" | ||
| + | color_text=" | ||
| + | color_textpercent=" | ||
| + | color_titletext=" | ||
| + | color_weekend=" | ||
| + | color_link=" | ||
| + | color_hover=" | ||
| + | color_u=" | ||
| + | color_v=" | ||
| + | color_p=" | ||
| + | color_h=" | ||
| + | color_k=" | ||
| + | color_s=" | ||
| + | color_e=" | ||
| + | color_x=" | ||
| + | LoadPlugin=" | ||
| + | LoadPlugin=" | ||
| + | LoadPlugin=" | ||
| + | LoadPlugin=" | ||
| + | LoadPlugin=" | ||
| + | ExtraTrackedRowsLimit=500 | ||
| + | </ | ||
| + | |||
| + | Nach erfolgreicher Konfiguration steht dem ersten Aufruf nichts mehr im Wege. Der Aufruf erfolgt über folgende URL: | ||
| + |    $ firefox http:// | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | ====== Links ====== | ||
| + |   * **[[centos: | ||
| + |   * **[[wiki: | ||
| + |   * **[[http:// | ||
| + | |||
| + | |||
| + | |||