Differences between version 6 and predecessor to the previous major change of XMailer.
Other diffs: Previous Revision, Previous Author
@@ -1,17 +1,21 @@
-That's something 
I actually 
wondered one day - so 
I wrote some scripts to find out:
 
 
+One day a few years back, 
I wondered what mailers people were using to send me messages.  So, 
I wrote some perl 
scripts to process my incoming mail and attempt 
to find out.
 
 
-[http://www
.hollenback
.net/xmailer/all_mailers
.png]
 
 
+I ran these scripts for several years on my server.  However, I've now switched to hosted web space and mail (may I recommend 
[fastmail.fm|
http://fastmail
.fm]?)
.  Thus, I can't run my scripts any more
. 
 
-Here are 
the (almost) [raw numbers|http://www
.hollenback.net/xmailer/xmailer-stats.html] used 
to generate this graph
. 
 
+Still, I will leave 
the scripts up on my web site in case anyone else wants them
.  The scripts do show how 
to use tied databases in perl, so they might make a useful learning tool
. 
 
-You may notice that the sum 
of all the values in the graph does not add up 
to the 'total messages received' number
.  That is because I don't graph 
the number of 'unknown mailers' (messages without 
X-Mailer headers).  You can find this number on the [raw data|http://www.hollenback.net/xmailer/xmailer
-stats.html] page
.  Add it to the other counts and everything will come out correct
. 
 
+Theory 
of operation: every incoming email gets fed 
to xmget (via procmail)
.  xmget processes the message and extracts 
the X-Mailer or User
-Agent header
.  That header is stored in a database via a tied perl hash
. 
 
-Updated every hour (did you really think I would trust you with 
a cgi script)?
 
 
+xmdump reads the database generated by xmget and produces 
a pretty graph suitable for inclusion in a web page.
 
 
-I need to explain this thing at some point.  Right now you just need to know 
that I count X-Mailer 
and User-Agent message headers
. 
 
+xmlistconv is a helper script 
that reads the database 
and produces a html page listing all the mailers
. 
 
-Unfortunately it appears at this point that the vast majority of emails I receive do not contain these headers.  I suspect this is because I am on a lot of mail lists.  An improvement to this report might be to start looking for things like Majordomo headers too.
 
 
-Here are the three scripts that collect the data and generate the graph
: [xmget|ftp
://ftp
.hollenback.net/pub/xmailer
/xmget] [xmdump|ftp
://ftp
.hollenback.net/pub/xmailer
/xmdump] [xmlistconv|ftp
://ftp
.hollenback.net/pub/xmailer
/xmlistconv] 
 
+;
:[xmget|http
://www
.hollenback.net/sysadmin
/xmget] - meant to be run on every incoming mail via procmail. 
 
+;:
[xmdump|http
://www
.hollenback.net/sysadmin
/xmdump] - meant to be run via cron on a regular basis. 
 
+;:
[xmlistconv|http
://www
.hollenback.net/sysadmin
/xmlistconv] - utility script to pretty-print the database info.
 
 
 
 
version 6
One day a few years back, I wondered what mailers people were using to send me messages.  So, I wrote some perl scripts to process my incoming mail and attempt to find out.
I ran these scripts for several years on my server.  However, I've now switched to hosted web space and mail (may I recommend fastmail.fm?).  Thus, I can't run my scripts any more.
Still, I will leave the scripts up on my web site in case anyone else wants them.  The scripts do show how to use tied databases in perl, so they might make a useful learning tool.
Theory of operation: every incoming email gets fed to xmget (via procmail).  xmget processes the message and extracts the X-Mailer or User-Agent header.  That header is stored in a database via a tied perl hash.
xmdump reads the database generated by xmget and produces a pretty graph suitable for inclusion in a web page.
xmlistconv is a helper script that reads the database and produces a html page listing all the mailers.
The scripts:
- xmget - meant to be run on every incoming mail via procmail.
 
- xmdump - meant to be run via cron on a regular basis.
 
- xmlistconv - utility script to pretty-print the database info.
 
--phil
CategoryGeekStuff