.\" Text automatically generated by txt2man .TH postconfirmd 8 "16 October 2017" "" "" .SH NAME \fBpostconfirmd.py \fP- Mail confirmation system (daemon part) \fB .SH SYNOPSIS .nf .fam C postconfirmd.py [\fIOPTIONS\fP] .fam T .fi .fam T .fi .SH DESCRIPTION postconfirmd.py is the long-running (daemon) part of a client-server program which handles email confirmations. It is intended as a front-end to mailing lists. It provides funcitonality which is a subset of TMDA, but is adapted to high-volume usage and does not have anywhere near all the bells and whistles which TMDA has. On the other hand, since the whitelist lookup is done by the long-running server part, the overhead of doing a verification that a poster has a confirmed address is much smaller than for TMDA. .PP Early tests indicate that with a whitelist of 16000 entries a lookup costs about 0.01 seconds and about ~5 Mbytes for the server daemon, in contrast whith TMDA which cost between ~10s and ~600s and ~98 Mb *per lookup* as it was set up in front of the IETF lists. .PP Somewhat simplified, the flow for regular mail is as follows: .PP .nf .fam C mail agent | v postconfirm/mailman wrapper [copy] -> cached in cache directory | v postconfirmc <==> postconfirmd | v postconfirm/mailman wrapper [white] -> Mailman [grey] | v (waiting for confirmation) .fam T .fi In the start of the flow above, a message comes in. If the envelope From is in the lists known by postconfirmd, it is passed through the mailman/ postconfirm wrapper, where postconfirmc is called to talk with postconfirmd and get either an OK to pass the message to Mailman, or cache it. .PP In more detail, this is the sequence of actions that postconfirm goes through when processing an incoming email message: .IP 1. 4 The mail is put in the cache directory. .IP 2. 4 If the message is a delivery-status report (content-type multipart/report, report-type delivery-status) then this is logged, and no further action is taken. .IP 3. 4 If the precedence matches the bulk_regex setting in the configuration file, then: .RS .PP a. if the envelope sender is in the whitelist or the white_regex list, then the message is forwarded directly. .PP b. if not, the receipt of a bulk message is logged, and no further action is taken. .RE .IP 4. 4 If the message has an auto-submitted header, and the value matches the auto_submitted_regex in the configuration file, then: .RS .PP a. if the envelope sender is in the whitelist or the white_regex list, then the message is forwarded directly. .PP b. if not, the receipt of a bulk message is logged, and no further action is taken. .RE .IP 5. 4 If the subject matches the regex for postconfirm's confirmation email subject, the confirmation is processed, and then: .RS .PP a. if the confirmation is valid, the held message is forwarded, and the confirmed address is added to the whitelist. .PP b. if not, the failed confirmation is logged, and the message is saved. .RE .IP 6. 4 If the envelope sender is in the whitelist or the white_regex list, the message is forwarded. .IP 7. 4 If there was no match earlier, a confirmation request is sent out for the message. .RE .PP .SH OPTIONS .TP .B \fB-d\fP, \fB--debug\fP Run with debug output .TP .B \fB-f\fP, \fB--foreground\fP Run in the foreground, don't daemonize .TP .B \fB-h\fP, \fB--help\fP Output this help, then exit .TP .B \fB-s\fP, \fB--socket\fP Specify the socket path .TP .B \fB-V\fP, \fB--version\fP Output version, then exit .SH FILES postconfirmd.py reads its configuration from the following files (if found), in the given order: .PP .nf .fam C /postconfirm.conf /etc/postconfirm.conf /etc/postconfirm/postconfirm.conf ~/.postconfirmrc .fam T .fi where is the directory where postconfirmd is installed. .SH AUTHOR Written by Henrik Levkowetz, . Uses the daemonize module from Chad J. Schroeder, from the Python Cookbook at http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/278731, and the readyexec module from Frank J. Tobin, available at http://readyexec.sourceforge.net/. .SH COPYRIGHT Copyright 2008 Henrik Levkowetz .PP This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. There is NO WARRANTY; not even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. .RE .PP