1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390
|
#
# Copyright (c) 2000, 2001, 2002 Jarkko Turkulainen. All rights reserved.
#
# SMA is copyrighted software. See the file COPYRIGHT which can be found
# at the top level of the sma distribution.
#
# $Id: README,v 1.8.1 2003/04/02 18:45:33 jt Exp $
#
SMA - SENDMAIL LOG ANALYSER
PLEASE READ THIS CAREFULLY BEFORE YOU START USING THIS SOFTWARE
In many countries, including Finland and many other European countries,
it might be illegal to read mail logs and produce mail log summaries.
Or, at least, it is illegal to use mail logs for anything else but problem
solving. Of course, if you run a mail service of your own, nobody's
interested in what you do with your logs. But on the other hand, if you
run a mail service that is used by other persons (no matter how many)
you simply cannot publish the names and top lists. You cannot even show
the report to your clients!!
If you are not sure about the law in your country, make sure that you run
SMA always with command line option (-d) or configuration file keyword
"ShowUsers no" (default in 1.3.2 or later). Or even better, disable all the
envelope analyses.
1. OVERVIEW
SMA is a program than analyses mail log files and produces a nice summary
of mail activity. It works by taking its input from files or standard input
and outputting the results to standard output or file. All error messages and
debugging information are printed to standard error.
Starting as of version 0.12.0, SMA prints the results as a nifty formatted
ASCII report. The HTML report can still be produced with the command line
option (-w). The HTML report uses heavily tables, so lynx is not the best
browser for the job. If you MUST use a text browser, try using links
instead.
Recent SMA versions (1.3.3+) also support postix logs. At least the following
features work:
* Envelope senders/recipients/relays
* Status messages
* Time distribution
2. SOURCE INSTALLATION
Unpack the distribution. Copy one of the Makefiles (Makefile, Makefile.w32
or Makefile.mscp) as Makefile. Modify Makefile and conf.h as needed. Type
$ make
(or nmake or gmake or whatever your system requires)..
at the top level of the distribution. After successful compilation, just
copy the binary file sma to your favourite directory or type
# make install
as root. This also installs the manpage as MANPATH/sma.8. You can also copy
the default configuration file "sma.conf" as defined in conf.h.
The program is small and simple, and it should compile on most UNIX-style
environments. At least following systems are known to be working:
AIX 4.1.3, 4.3 (gcc)
Digital Unix 4.0 (gcc, DECcc)
FreeBSD/i386 3.4, 3.5.1, 4.x (gcc)
HP-UX 10.20 (gcc, HPcc)
IRIX 6.5 (gcc)
NetBSD/sparc 1.4.2 (gcc)
OpenBSD/i386 2.7 - 3.2 (gcc)
Red Hat Linux 5.2 - 7.2 (gcc)
Solaris 2.5.1, 2.6, 7 and 8 (gcc)
Solaris/i386 8 (gcc)
Mac OS X (Darwin 6.2)
Win32 (cygwin-1.3.3)
Win32 (mingw-1.1) (*)
Win32 (MS Visual C++) (**)
(*) Compile with Makefile.w32
(**) Compile with Makefile.msvcp
Systems with known problems:
o on Tru64 UNIX cluster (DECcc) malloc() returns errno 22 (EINVAL)
which indicates that the requested space is out of range.
The flag -DUSE_REGEXP in CFLAGS may introduce some problems with systems
not conforming to XPG3 definition of regular expressions. In that case,
modify Makefile and try to recompile. If USE_REGEXP is not defined, the
standard strstr() function is used with filtering routines.
RPM BUILDING
The RPM spec-file (contrib/sma.spec) can be used to compile RPM binary
package. Here are the instructions:
- Copy sma-x.tar.gz to /usr/src/RPM/SOURCES/ (x refers to sma version,
for example 1.3)
- Unpack sma-x.tar.gz
$ tar zxvf sma-x.tar.gz
- Build RPM
# rpm -bb sma-x/contrib/sma.spec
- Install RPM from /usr/src/RPM/RPMS/
Note that you may need to replace /usr/src/RPM with /usr/src/redhat on
some Red Hat -based systems.
3. WIN32 BINARY INSTALLATION
Win32 binary distribution is compiled with MinGW, see
http://www.mingw.org for more information. SMA binary should run
on all 32-bit Windows versions (95, 98, NT, 2000, XP, ...) that
use Microsoft's standard C runtime library (MSVCRT.DLL).
Here are the general instuctions on how to get SMA binary working.
- Unpack the distribution sma-x-win32.zip where 'x'
refers to version number of the sma distribution.
- Make a directory (C:\sma etc.)
If you run Sendmail for NT, it might be easiest to install
the binary in that directory (C:\Program Files\Sendmail etc.)
- Copy sma.exe and sma.conf to your directory. Edit sma.conf
with your favourite text editor. Make sure your editor can
handle ASCII files correctly. MS Word doesn't.
If you run Sendmail for NT, you must enable logging to files. SMA
cannot read NT event log. At Sendmail Control Panel, set sendmail
logging level as '9' (or higher) and define the log file (propably
C:\Program Files\Sendmail\smlog.txt or something).
4. HOW TO USE
sma [-Fcdhinpsqvw] [-D date1,date2] [-b color] [-f file]
[-o file] [-l num] [-r num] [-t value] [files ...]
Generally, SMA reads one or more log files from /var/log (or wherever
they are) and redirect the output to file. The program tries to open
configuration file named "sma.conf" from the current working directory.
This can be overriden with the flags (-f and -F) or with a compile
time option DEFAULT_CONF, defined in file conf.h.
Note that the behavior of sendmail logging has changed with the 8.12 so
that the MSP and MTA deliveries are logged as a separate entries. The
syslog tag should be set with the option (-L) in both sendmail and SMA.
Command line options:
-b color Set the background color of the HTML report as "color".
This is a six-digit RGB value.
-C string Set report header as "string".
-c Print the copyright notice and exit.
-D date1,date2 Process log entry only if the date is between "date1"
and "date2". The format of the date is as follows:
[[[[[cc]yy]mm]dd]HH]MM[.SS] where
yy Year in abbreviated form (for years 1969-2068).
The format ccyymmddHHMM is also permitted, for
non-ambiguous years.
mm Numeric month, a number from 1 to 12.
dd Day, a number from 1 to 31.
HH Hour, a number from 0 to 23.
MM Minute, a number from 0 to 59.
SS Second, a number from 0 to 61 (59 plus a maximum of
two leap seconds).
Everything but the minute is optional. The dates must be
separated using a colon, without any whitespace characters.
If either of the dates is missing, current date is used.
-d Analyse sender/receiver domains instead of full
e-mail addresses; eg. domain.com instead of
joe@domain.com.
-f file Read the configuration from "file" instead of the default
configuration (./sma.conf). Some of the configuration
options are only available from the configuration file.
You should read the file "sma.conf" for more information.
-F Do not use default configuration file even if it exists.
-h Print help message and exit.
-i Include the ASCII report in HTML comment field. This option
requires HTML reporting (-w, -O html or "Format html").
-L string Process only lines with syslog tag "string".
-n Do not report the time distribution.
-o file Print the report as file. If not given, print to stdout.
-O format Output format. ascii, html or clog. See CUSTOM LOGGING for
more information on clog format.
-p Print current configuration to stdout.
-s Sort by transfers. Default is by number of messages.
-q Do not print any warning messages. Sometimes SMA may
be noisy. Use this switch if you see too many
"skipping useless line.." messages.
-l num Number of the senders/recipients that are printed
in the summary. Default is 10.
-r num Number of the input/output relay domains that are
printed in the summary. Defaults to 5.
-t va1ue Adjust the internal hash table size. Possible values are:
"normal", "big", "huge" and custom, comma separated values.
-v Print some debugging information for each parsed line.
Be careful with big files and slow terminals..
-w Print the report in HTML.
Examples:
- Print the results in txtdocs/report.txt:
$ sma maillog > txtdocs/report.txt
- Print only relay domains and sort them by transfers.
Output format is HTML:
$ sma -nsw -l 0 maillog > wwwdocs/report.html
- Print the ASCII report to file report.txt and errors/debugging to
file debug.txt:
$ sma -v maillog > report.txt 2> debug.txt
- Read configuration from file /usr/local/etc/sma.conf and read the
output file name from command line:
$ sma -f /usr/local/etc/sma.conf -o report.html maillog
- Read log file smlog.txt and write output to file
WebUI\reports\index.html:
C:\Program Files\Sendmail> sma -o WebUI\reports\index.html smlog.txt
- Read from stdin and write to stdout :-)
$ sma
- Read only logs between minutes 15 and 45 this hour
$ sma -D 15,45 maillog
- Read only logs between 16:30 and 16:50 today
$ sma -D 1630,1650 maillog
- Read only logs before 25th day this month
$ sma -D ,250000 maillog
- Read only logs after 15:25:10 (hour is 15, minute 25 and second 10)
$ sma -D 1525.10 maillog
- Read logs between 2001 and 2002, with full dates
$ sma -D 200101010000.00,200201010000.00
- Print configuration to file sma.conf
$ sma -p [your favourite command line options] > sma.conf
- Use big hash tables
$ sma -t big
- Set address hash table size as 10000 and relay table size as 3000:
$ sma -t 10000,3000
5. FILTERS
SMA filters help you to get an answer to questions like "how many
messages are passed through a specific relay host?" or "how many
messages were sent to @some.domain.com at certain time interval"?
Filters are invoked from the configuration file with the following keys:
Key Value
---------------------------------------------------
EnvelopeSenderFilter *
EnvelopeRecipientFilter *
RelaySenderFilter *
RelayRecipientFilter *
StartTime YYYY/MM/DD-MM:HH:SS
EndTime YYYY/MM/DD-MM:HH:SS
The meaning of the keys should be clear - four keys are for envelopes
and relays (input and ouput) and the rest of the six are for start -and
end times. The values are tested as a simple substring match. Only
regexp is (*) which means "any". If compiled with USE_REGEXP, all the
standard, egrep-style extended regular expressions may be used.
All filters are ANDed together - you cannot generate a report with filter
"all mails sent to some.domain OR all mails sent from some.domain".
But you can always run the same file several times with different set
of filters. If complied with USE_REGEXP, filters may contain also
conditionals (|).
The meaning of filter can be reversed by placing '!' as a first character.
All other '!'-characters are taken literally (or part of the regexp).
6. CUSTOM LOGGING
Custom log format (clog) is one of the output formatting options. Unlike
ASCII and HTML, which are reporting formats, clog is a sort of log file
filter. It's main function is to convert the multi-line sendmail log file
to a simple, one-line-per-delivery format. This simple log file may then
be further analysed with another log analyzer, for example the excellent
analog (http://www.statslab.cam.ac.uk/~sret1/analog).
Custom logging is invoked with command line option (-O clog) and/or
configured using the following configuration file keywords:
Format clog
ClogFormat FORMATSTRING
The value FORMATSTRING controls the information and how it is formatted.
It consists of ordinary characters and various two-character sequencies which
are replaced with built-in variables as follows:
%U time in UNIX time format
%D time in form "Wed Jun 30 21:49:08 1993"
%y year, four digits
%m month, in digits
%M month, three letter English
%n minute
%s second
%d day
%h hour
%H hostname
%z size in bytes
%f envelope sender
%t envelope recipient
%F relay sender
%T relay recipient
%S status (1 = sent, 0 = error)
%i message id
%% %-character
\n newline
\t tab stop
\\ single backslash
For example, the following format string
ClogFormat "%D: from=%f, to=%t, size=%z"
looks at the output side like
Thu Oct 25 04:24:56 2001: from=sender1, to=recipient1, size=10
Thu Oct 25 04:24:57 2001: from=sender2, to=recipient2, size=20
Thu Oct 25 04:24:58 2001: from=sender3, to=recipient3 size=30
Unlike ASCII and HTML, Custom logging is done in real-time and it runs with
a very small memory footprint. Piping the output of running sendmail daemon
might be a very interesting application:
$ tail -f /var/log/maillog | sma -O clog
7. ACKNOWLEDGEMENTS
Adam Beaumont <admin at a-q dot co dot uk> - thanks for constructive ideas
Dirk Meyer <dirk dot meyer at dinoex dot sub dot org> - code cleanup patch
Nicos Nicolaou <nicosn at logosnet dot cy dot net> - ideas and feedback
Mario Pino Uceda <mpino at cica dot es> - support for big log files
Pekka Honkanen <phonkane at cc dot hut dot fi> - testing and feedback
Stephane Lentz <Stephane dot Lentz at ansf dot alcatel dot fr> - RPM spec file
And many others not mentioned here (see the file HISTORY) for reporting bugs,
giving feedback, etc.
8. CONTACT
All comments/suggestions/diffs via email to sma@klake.org
|