Difference between revisions of "Mailstats"
Line 1: | Line 1: | ||
− | == | + | ==Mailstats== |
Brian Read's mailstats contrib analyzes your qpsmtpd log files and sends a periodic email to the address you specify summarizing your server's email activity. | Brian Read's mailstats contrib analyzes your qpsmtpd log files and sends a periodic email to the address you specify summarizing your server's email activity. | ||
− | ===Installation | + | The latest version also supports storing your mail server statistics in a MySQL database. You could potentially configure several servers to store their statistics in one central database in order to get consolidated statistics from several servers. |
+ | |||
+ | Read the original announcement here: http://forums.contribs.org/index.php?topic=40651.0 | ||
+ | |||
+ | ==Installation== | ||
yum install --enablerepo=smecontribs smeserver-mailstats | yum install --enablerepo=smecontribs smeserver-mailstats | ||
− | + | ==Configuration== | |
If you install mailstats you should review the latest documentation, which is kept in the script itself. You can review the script after installation using: | If you install mailstats you should review the latest documentation, which is kept in the script itself. You can review the script after installation using: | ||
less /usr/bin/spamfilter-stats-7.pl | less /usr/bin/spamfilter-stats-7.pl | ||
Line 11: | Line 15: | ||
The configuration options for v 0.6.20 have been listed below. | The configuration options for v 0.6.20 have been listed below. | ||
− | + | ===Create the service=== | |
config set mailstats service | config set mailstats service | ||
− | + | ===Status=== | |
config setprop mailstats Status ("enabled"|"disabled") | config setprop mailstats Status ("enabled"|"disabled") | ||
− | + | ===Column Header=== | |
Column Header entries are created and set to "yes" if a non zero count is detected (they may not exist before). "Yes" means that that column is then always shown. If you delete the entry or set it to "auto" then it will only show if a non zero occurs again (and then get set to "yes").(enable, supress or only show if nonzero) | Column Header entries are created and set to "yes" if a non zero count is detected (they may not exist before). "Yes" means that that column is then always shown. If you delete the entry or set it to "auto" then it will only show if a non zero occurs again (and then get set to "yes").(enable, supress or only show if nonzero) | ||
config setprop mailstats <column header> ("yes"|"no"|"auto") | config setprop mailstats <column header> ("yes"|"no"|"auto") | ||
− | + | ===QpsmtpCodes=== | |
config setprop mailstats QpsmtpdCodes ("enabled"|"disabled") | config setprop mailstats QpsmtpdCodes ("enabled"|"disabled") | ||
See this note for more information about the qpsmtpd LogLevel setting: [[Updating_to_SME_7.2#qpsmtpd_LogLevel]] | See this note for more information about the qpsmtpd LogLevel setting: [[Updating_to_SME_7.2#qpsmtpd_LogLevel]] | ||
− | ====SpamAssassin | + | ====SpamAssassin ules=== |
config setprop mailstats SARules ("enabled"|"disabled") | config setprop mailstats SARules ("enabled"|"disabled") | ||
− | + | ===JunkMailList=== | |
config setprop mailstats JunkMailList ("enabled"|"disabled") | config setprop mailstats JunkMailList ("enabled"|"disabled") | ||
− | + | ===SpamAssassin Rule Percent Threshold=== | |
Set a threshold for report cutoff | Set a threshold for report cutoff | ||
config setprop mailstats SARulePercentThreshold (0.5) | config setprop mailstats SARulePercentThreshold (0.5) | ||
− | + | ===Email to send report=== | |
config setprop mailstats Email (admin) - email to send report | config setprop mailstats Email (admin) - email to send report | ||
− | + | ===Save data to MySQL database=== | |
(default is "no") | (default is "no") | ||
config setprop mailstats SaveDataToMySQL ("yes"|"no") | config setprop mailstats SaveDataToMySQL ("yes"|"no") | ||
− | + | ===MySQL server hostname=== | |
(default is "localhost") | (default is "localhost") | ||
config setprop mailstats server <hostname> | config setprop mailstats server <hostname> | ||
− | + | ===MySQL server port=== | |
(default is "3306")''' | (default is "3306")''' | ||
config setprop mailstats DBPort <####> | config setprop mailstats DBPort <####> | ||
− | + | ===Reporting Interval=== | |
config setprop mailstats Interval ("day"|"week"|"fortnight"|"month"|"#####")) | config setprop mailstats Interval ("day"|"week"|"fortnight"|"month"|"#####")) | ||
Note: a number is interpreted as seconds | Note: a number is interpreted as seconds | ||
− | + | ===Base=== | |
config setprop mailstats Base ("Midnight"|Midday"|"Now"|"##") | config setprop mailstats Base ("Midnight"|Midday"|"Now"|"##") | ||
Note: a number is interpreted as the hour of the day (0-23) | Note: a number is interpreted as the hour of the day (0-23) | ||
− | + | ==Logging to a MySQL database== | |
In order to log your data to a MySQL database, you will need to create a database named 'mailstats'. Here are the notes from spamfilter-stats-7.pl on what is required: | In order to log your data to a MySQL database, you will need to create a database named 'mailstats'. Here are the notes from spamfilter-stats-7.pl on what is required: | ||
<nowiki>############################################################################# | <nowiki>############################################################################# |
Revision as of 15:20, 11 April 2008
Mailstats
Brian Read's mailstats contrib analyzes your qpsmtpd log files and sends a periodic email to the address you specify summarizing your server's email activity.
The latest version also supports storing your mail server statistics in a MySQL database. You could potentially configure several servers to store their statistics in one central database in order to get consolidated statistics from several servers.
Read the original announcement here: http://forums.contribs.org/index.php?topic=40651.0
Installation
yum install --enablerepo=smecontribs smeserver-mailstats
Configuration
If you install mailstats you should review the latest documentation, which is kept in the script itself. You can review the script after installation using:
less /usr/bin/spamfilter-stats-7.pl
The configuration options for v 0.6.20 have been listed below.
Create the service
config set mailstats service
Status
config setprop mailstats Status ("enabled"|"disabled")
Column Header
Column Header entries are created and set to "yes" if a non zero count is detected (they may not exist before). "Yes" means that that column is then always shown. If you delete the entry or set it to "auto" then it will only show if a non zero occurs again (and then get set to "yes").(enable, supress or only show if nonzero)
config setprop mailstats <column header> ("yes"|"no"|"auto")
QpsmtpCodes
config setprop mailstats QpsmtpdCodes ("enabled"|"disabled")
See this note for more information about the qpsmtpd LogLevel setting: Updating_to_SME_7.2#qpsmtpd_LogLevel
=SpamAssassin ules
config setprop mailstats SARules ("enabled"|"disabled")
JunkMailList
config setprop mailstats JunkMailList ("enabled"|"disabled")
SpamAssassin Rule Percent Threshold
Set a threshold for report cutoff
config setprop mailstats SARulePercentThreshold (0.5)
Email to send report
config setprop mailstats Email (admin) - email to send report
Save data to MySQL database
(default is "no")
config setprop mailstats SaveDataToMySQL ("yes"|"no")
MySQL server hostname
(default is "localhost")
config setprop mailstats server <hostname>
MySQL server port
(default is "3306")
config setprop mailstats DBPort <####>
Reporting Interval
config setprop mailstats Interval ("day"|"week"|"fortnight"|"month"|"#####"))
Note: a number is interpreted as seconds
Base
config setprop mailstats Base ("Midnight"|Midday"|"Now"|"##")
Note: a number is interpreted as the hour of the day (0-23)
Logging to a MySQL database
In order to log your data to a MySQL database, you will need to create a database named 'mailstats'. Here are the notes from spamfilter-stats-7.pl on what is required:
############################################################################# # # Table structure for MySQL table for saving data # # Database : `mailstats` # # -------------------------------------------------------- # # Table structure for table `ColumnStats` # # #CREATE TABLE `ColumnStats` ( # `ColumnStatsid` int(11) NOT NULL auto_increment, # `dateid` int(11) NOT NULL default '0', # `timeid` int(11) NOT NULL default '0', # `descr` varchar(20) NOT NULL default '', # `count` bigint(20) NOT NULL default '0', # `servername` varchar(30) NOT NULL default '', # PRIMARY KEY (`ColumnStatsid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # -------------------------------------------------------- # # Table structure for table `JunkMailStats` # #CREATE TABLE `JunkMailStats` ( # `JunkMailstatsid` int(11) NOT NULL auto_increment, # `dateid` int(11) NOT NULL default '0', # `user` varchar(12) NOT NULL default '', # `count` bigint(20) NOT NULL default '0', # `servername` varchar(30) default NULL, # PRIMARY KEY (`JunkMailstatsid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # # -------------------------------------------------------- # # Table structure for table `SARules` # #CREATE TABLE `SARules` ( # `SARulesid` int(11) NOT NULL auto_increment, # `dateid` int(11) NOT NULL default '0', # `rule` varchar(50) NOT NULL default '', # `count` bigint(20) NOT NULL default '0', # `totalhits` bigint(20) NOT NULL default '0', # `servername` varchar(30) NOT NULL default '', # PRIMARY KEY (`SARulesid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # -------------------------------------------------------- # # Table structure for table `SAscores` # #CREATE TABLE `SAscores` ( # `SAscoresid` int(11) NOT NULL auto_increment, # `dateid` int(11) NOT NULL default '0', # `acceptedcount` bigint(20) NOT NULL default '0', # `rejectedcount` bigint(20) NOT NULL default '0', # `hamcount` bigint(20) NOT NULL default '0', # `acceptedscore` decimal(20,2) NOT NULL default '0.00', # `rejectedscore` decimal(20,2) NOT NULL default '0.00', # `hamscore` decimal(20,2) NOT NULL default '0.00', # `totalsmtp` bigint(20) NOT NULL default '0', # `totalrecip` bigint(20) NOT NULL default '0', # `servername` varchar(30) NOT NULL default '', # PRIMARY KEY (`SAscoresid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # -------------------------------------------------------- # # Table structure for table `VirusStats` # #CREATE TABLE `VirusStats` ( # `VirusStatsid` int(11) NOT NULL auto_increment, # `dateid` int(11) NOT NULL default '0', # `descr` varchar(40) NOT NULL default '', # `count` bigint(20) NOT NULL default '0', # `servername` varchar(30) NOT NULL default '', # PRIMARY KEY (`VirusStatsid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # # -------------------------------------------------------- # # Table structure for table `date` # #CREATE TABLE `date` ( # `dateid` int(11) NOT NULL auto_increment, # `date` date NOT NULL default '0000-00-00', # PRIMARY KEY (`dateid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # # -------------------------------------------------------- # # Table structure for table `domains` # #CREATE TABLE `domains` ( # `domainsid` int(11) NOT NULL auto_increment, # `dateid` int(11) NOT NULL default '0', # `domain` varchar(40) NOT NULL default '', # `type` varchar(10) NOT NULL default '', # `total` bigint(20) NOT NULL default '0', # `denied` bigint(20) NOT NULL default '0', # `xfererr` bigint(20) NOT NULL default '0', # `accept` bigint(20) NOT NULL default '0', # `servername` varchar(30) NOT NULL default '', # PRIMARY KEY (`domainsid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # -------------------------------------------------------- # # Table structure for table `qpsmtpdcodes` # #CREATE TABLE `qpsmtpdcodes` ( # `qpsmtpdcodesid` int(11) NOT NULL auto_increment, # `dateid` int(11) NOT NULL default '0', # `reason` varchar(40) NOT NULL default '', # `count` bigint(20) NOT NULL default '0', # `servername` varchar(30) NOT NULL default '', # PRIMARY KEY (`qpsmtpdcodesid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # -------------------------------------------------------- # # Table structure for table `time` # #CREATE TABLE `time` ( # `timeid` int(11) NOT NULL auto_increment, # `time` time NOT NULL default '00:00:00', # PRIMARY KEY (`timeid`) #) ENGINE=MyISAM DEFAULT CHARSET=latin1; # #############################################################################
Additional Notes
Handling @*.u Logfiles
Multilog occasionally generates log files that end in ".u" instead of ".s". The multilog manual says this:
- .s: This file is completely processed and safely written to disk.
- .u: This file was being created at the moment of an outage. It may have been truncated. It has not been processed.
The latest version of mailstats.cron will process "@*" and "current", so will catch all log files. Earlier versions only processed "*.s" and "current".