Home | History | Annotate | Line # | Download | only in proto
MAILLOG_README.html revision 1.1.1.5
      1      1.1  christos <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"
      2  1.1.1.5  christos         "https://www.w3.org/TR/html4/loose.dtd">
      3      1.1  christos 
      4      1.1  christos <html>
      5      1.1  christos 
      6      1.1  christos <head>
      7      1.1  christos 
      8      1.1  christos <title>Postfix logging to file or stdout</title>
      9      1.1  christos 
     10  1.1.1.3  christos <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     11  1.1.1.4  christos <link rel='stylesheet' type='text/css' href='postfix-doc.css'>
     12      1.1  christos 
     13      1.1  christos </head>
     14      1.1  christos 
     15      1.1  christos <body>
     16      1.1  christos 
     17      1.1  christos <h1><img src="postfix-logo.jpg" width="203" height="98" ALT="">Postfix
     18      1.1  christos logging to file or stdout</h1>
     19      1.1  christos 
     20      1.1  christos <hr>
     21      1.1  christos 
     22      1.1  christos <h2>Overview </h2>
     23      1.1  christos 
     24  1.1.1.4  christos <p> Postfix supports its own logging system as an alternative to
     25      1.1  christos syslog (which remains the default). This is available with Postfix
     26      1.1  christos version 3.4 or later. </p>
     27      1.1  christos 
     28      1.1  christos <p> Topics covered in this document: </p>
     29      1.1  christos 
     30      1.1  christos <ul>
     31      1.1  christos 
     32      1.1  christos <li><a href="#log-to-file">Configuring logging to file</a>
     33      1.1  christos 
     34      1.1  christos <li><a href="#log-to-stdout">Configuring logging to stdout</a>
     35      1.1  christos 
     36      1.1  christos <li><a href="#logrotate">Rotating logs </a>
     37      1.1  christos 
     38      1.1  christos <li><a href="#limitations">Limitations</a>
     39      1.1  christos 
     40      1.1  christos </ul>
     41      1.1  christos 
     42      1.1  christos <h2> <a name="log-to-file"> Configuring logging to file </a> </h2>
     43      1.1  christos 
     44      1.1  christos <p> Logging to file solves a usability problem for MacOS, and
     45      1.1  christos eliminates multiple problems for systemd-based systems. </p>
     46      1.1  christos 
     47      1.1  christos <ol>
     48      1.1  christos 
     49      1.1  christos <li> <p> Add the following line to master.cf if not already present
     50      1.1  christos (note: there must be no whitespace at the start of the line): </p>
     51      1.1  christos 
     52      1.1  christos <blockquote>
     53      1.1  christos <pre>
     54      1.1  christos postlog   unix-dgram n  -       n       -       1       postlogd
     55      1.1  christos </pre>
     56      1.1  christos </blockquote>
     57      1.1  christos 
     58      1.1  christos <p> Note: the service type "<b>unix-dgram</b>" was introduced with 
     59      1.1  christos Postfix 3.4. Remove the above line before backing out to an older
     60      1.1  christos Postfix version. </p>
     61      1.1  christos 
     62      1.1  christos <li> <p> Configure Postfix to write logging, to, for example,
     63      1.1  christos /var/log/postfix.log. See also the "<a href="#logrotate">Logfile
     64      1.1  christos rotation</a>" section below for logfile management. </p>
     65      1.1  christos 
     66  1.1.1.5  christos <p> In the example below, specifying maillog_file_permissions is
     67  1.1.1.5  christos optional (Postfix 3.9 and later). The default value is 0600, i.e.,
     68  1.1.1.5  christos only the super-user can access the file; the value 0644 also
     69  1.1.1.5  christos adds 'group' and 'other' read access. </p>
     70  1.1.1.5  christos 
     71      1.1  christos <blockquote>
     72      1.1  christos <pre>
     73      1.1  christos # postfix stop
     74      1.1  christos # postconf maillog_file=/var/log/postfix.log
     75  1.1.1.5  christos # postconf maillog_file_permissions=0644 # (Postfix 3.9 and later)
     76      1.1  christos # postfix start
     77      1.1  christos </pre>
     78      1.1  christos </blockquote>
     79      1.1  christos 
     80      1.1  christos <p> By default, the logfile name must start with "/var" or "/dev/stdout"
     81      1.1  christos (the list of allowed prefixes is configured with the maillog_file_prefixes
     82      1.1  christos parameter). This safety mechanism limits the damage from a single
     83      1.1  christos configuration mistake. </p>
     84      1.1  christos 
     85      1.1  christos </ol>
     86      1.1  christos 
     87      1.1  christos <h2> <a name="log-to-stdout"> Configuring logging to stdout </a> </h2>
     88      1.1  christos 
     89      1.1  christos <p> Logging to stdout is useful when Postfix runs in a container,
     90      1.1  christos as it eliminates a syslogd dependency. </p>
     91      1.1  christos 
     92      1.1  christos <ol>
     93      1.1  christos 
     94      1.1  christos <li> <p> Add the following line to master.cf if not already present (note:
     95      1.1  christos there must be no whitespace at the start of the line): </p>
     96      1.1  christos 
     97      1.1  christos <blockquote>
     98      1.1  christos <pre>
     99      1.1  christos postlog   unix-dgram n  -       n       -       1       postlogd
    100      1.1  christos </pre>
    101      1.1  christos </blockquote>
    102      1.1  christos 
    103      1.1  christos <p> Note: the service type "<b>unix-dgram</b>" was introduced with 
    104      1.1  christos Postfix 3.4. Remove the above line before backing out to an older
    105      1.1  christos Postfix version. </p>
    106      1.1  christos 
    107      1.1  christos <li> <p> Configure main.cf with "maillog_file = /dev/stdout". </p> 
    108      1.1  christos 
    109      1.1  christos <li> <p> Start Postfix with "<b>postfix start-fg</b>". </p>
    110      1.1  christos 
    111      1.1  christos </ol>
    112      1.1  christos 
    113      1.1  christos <h2> <a name="logrotate"> Rotating logs </a> </h2>
    114      1.1  christos 
    115      1.1  christos <p> The command "<b>postfix logrotate</b>" may be run by hand or
    116      1.1  christos by a cronjob. It logs all errors, and reports errors to stderr if
    117      1.1  christos run from a terminal. This command implements the following steps:
    118      1.1  christos </p>
    119      1.1  christos 
    120      1.1  christos <ul>
    121      1.1  christos 
    122      1.1  christos <li> <p> Rename the current logfile by appending a suffix that
    123      1.1  christos contains the date and time. This suffix is configured with the
    124  1.1.1.2  christos maillog_file_rotate_suffix parameter (default: %Y%m%d-%H%M%S). </p>
    125      1.1  christos 
    126      1.1  christos <li> <p> Reload Postfix so that postlogd(8) immediately closes the
    127      1.1  christos old logfile. </p>
    128      1.1  christos 
    129      1.1  christos <li> <p> After a brief pause, compress the old logfile. The compression
    130      1.1  christos program is configured with the maillog_file_compressor parameter
    131      1.1  christos (default: gzip). </p>
    132      1.1  christos 
    133  1.1.1.5  christos <li> <p> The next time it logs an event, postlogd(8) will create a
    134  1.1.1.5  christos new logfile, with permissions specified with the maillog_file_permissions
    135  1.1.1.5  christos parameter (default: 0600). </p>
    136  1.1.1.5  christos 
    137      1.1  christos </ul>
    138      1.1  christos 
    139      1.1  christos <p> Notes: </p>
    140      1.1  christos 
    141      1.1  christos <ul>
    142      1.1  christos 
    143  1.1.1.3  christos <li> <p> This command will not rotate a logfile with a pathname under
    144      1.1  christos the /dev directory, such as /dev/stdout. </p>
    145      1.1  christos 
    146      1.1  christos <li> <p> This command does not (yet) remove old logfiles. </p>
    147      1.1  christos 
    148      1.1  christos </ul>
    149      1.1  christos 
    150      1.1  christos <h2> <a name="limitations">Limitations</a> </h2>
    151      1.1  christos 
    152      1.1  christos <p> Background: </p>
    153      1.1  christos 
    154      1.1  christos <ul>
    155      1.1  christos 
    156      1.1  christos <li> <p> Postfix consists of a number of daemon programs that run
    157      1.1  christos in the background, as well as non-daemon programs for local mail
    158      1.1  christos submission or Postfix management.
    159      1.1  christos 
    160  1.1.1.3  christos <li> <p> Logging to the Postfix logfile or stdout requires the Postfix
    161      1.1  christos postlogd(8) service. This ensures that simultaneous logging from
    162      1.1  christos different programs will not get mixed up. </p>
    163      1.1  christos 
    164      1.1  christos <li> <p> All Postfix programs can log to syslog, but not all programs
    165      1.1  christos have sufficient privileges to use the Postfix logging service, and
    166      1.1  christos many non-daemon programs must not log to stdout as that would corrupt
    167      1.1  christos their output. </p>
    168      1.1  christos 
    169      1.1  christos </ul>
    170      1.1  christos 
    171      1.1  christos <p> Limitations: </p>
    172      1.1  christos 
    173      1.1  christos <ul>
    174      1.1  christos 
    175      1.1  christos <li> <p> Non-daemon Postfix programs will log errors to syslogd(8)
    176      1.1  christos before they have processed command-line options and main.cf parameters.
    177      1.1  christos 
    178      1.1  christos <li> <p> If Postfix is down, the non-daemon programs postfix(1),
    179      1.1  christos postsuper(1), postmulti(1), and postlog(1), will log directly to
    180      1.1  christos $maillog_file. These programs expect to run with root privileges,
    181      1.1  christos for example during Postfix start-up, reload, or shutdown.
    182      1.1  christos 
    183      1.1  christos <li> <p> Other non-daemon Postfix programs will never write directly
    184      1.1  christos to $maillog_file (also, logging to stdout would interfere with the
    185      1.1  christos operation of some of these programs). These programs can log to
    186      1.1  christos postlogd(8) if they are run by the super-user, or if their executable
    187      1.1  christos file has set-gid permission. Do not set this permission on programs
    188  1.1.1.4  christos other than postdrop(1), postqueue(1), and (Postfix &ge; 3.7)
    189  1.1.1.4  christos postlog(1).
    190      1.1  christos 
    191      1.1  christos </ul>
    192      1.1  christos 
    193      1.1  christos </body>
    194      1.1  christos 
    195      1.1  christos </html>
    196