one queue per rcpt hurts when delivering to agents that don't get stuck on shell commands or mailbox locks xxx: bounced as yyy (bounced mail); xxx forwarded as zzz (mail expanded via :include:). postconf -f filename get rid of the relocated feature - perhaps better to bounce recipients at the SMTP port. make sendmail/smtpd/cleanup output directory/fifo configurable if postdrop scrutinizes input, skip the overhead in the pickup daemon. add a threshold to sendmail etc. stderr logging, so that class "info" messages don't go to stderr. implement an UCE control to accept mail if the sender domain sender lists us as MX host (rafal wiosna). By the same token, implement a control to accept mail when the client hostname/parent domain lists us as their MX host. received: headers should be generated by the cleanup daemon, and client attributes ("with", "from", etc.) should be passed along with the message. This guarantees that forwarded/aliased mail gets stamped with the queue ID. toss double-bounce mail even when mail for the local machine is redirected to another box. See mail_addr_double_bounce(). remote showq access (cookie in maildrop or print some text to inform the user) defer: explain mail was bounced after N days multiple rewrite processes? gethostbyaddr() uses native name services, which can be slow. can we detect a client that ignores error responses? way to block inbound mail based on recipient suffix? can Postfix implement one switchboard instead of having all these little lookup tables? make canonical/virtual/etc. table lookup order configurable pass on client etc/ attributes along with message to delivery agent scrutinize file opens in delivery agents just like in qmgr (better: open the file and see if someone compromised the vmailer account and is racing against us). suspend/resume signals + master status (suspended/running) in PID file. Maybe use FIFO instead. But, that means requests do not arrive when the master is stuck. postedit queue-id command... more flexible mail queue list command multiple queues may make ETRN processing less painful because there is less delayed mail to plow through. qmgr: configurable incoming/deferred mixing ratio so we can prioritize new mail over old mail Replace [my.own.ip.addr] by domain name so that delivered-to has the desired effect. Received: header and bounce text will be configurable with ${name} macros. This requires that everything must cope with newlines in config parameters (including the SMTP greeting bannner, yuck). Pass along the client hostname/posting user with queue files, to be logged by the queue manager. showq: don't use mail_open_ok() - it assumes coordinated queue access. trivial-rewrite: optionally, use DNS to fully qualify hostnames. pickup/cleanup/qmgr/local: add options record to control internal features such as canonical/virtual mapping, VERPs etcetera. Add hook for (domain, user database) support. This is needed if you have lots of real domains and can't afford a separate master.cf delivery agent entry for each domain. Add support for DBZ databases, using the code from INN. Reportedly, GDB handles large numbers of keys poorly. Change the front-end to cleanup protocol so that the front-end sends the expected message size, and so that the cleanup service can report if there is enough space. This is useful only for the SMTP server, because pickup can't produce bounce requests: the bounce service can't read the maildrop file. On systems with functional UNIX-domain sockets, use that instead of FIFOs to trigger the pickup and qmgr services. This allows for some coupling between front-end programs and queue manager, so that a burst of inbound mail does not lock out the queue manager from accessing the queue, causing outbound delivery to stop. There is a need to run `master' services outside the "master" environment, either for testing (new config files) or for production. For consistency reasons, programs file names should be taken from the master.cf file. - The showq service. Used by the super user when the mail system is down. - The smtpd service for "sendmail -bs" emulation. Used by some mail posting agents. Output to the maildrop, so that messages can be posted even when the mail system is down. - The rewrite engine for "sendmail -bt" emulation, for off-line testing of configuration files. Requires a method to override the location of the rewriting rules file. Or, perhaps there should be an official place (/etc/vmailer/testbed?) for playing with config files. postfix-script: detect and/or build missing alias database. In order to do this we must extract the alias_maps parameter from the main.cf file, and create any missing files with the right ownerships. implement the return-receipt-to notification service. bounce/defer: provide attribute-value interface, for better logging (expanded-from etc.) and non-delivery reports. Maintain per-client short-term host status, so we can slow down unreasonable clients Make archiving delivered mail a REAL option (queue manager). What about one archive per day. The magic could be put into the mail queue name routines. Just make it aware of the date. Will the mail system be faster when we avoid moving new messages incoming->active? How would one detect the arrival of new files? pickup: pass file descriptor to cleanup instead of copying data. This violates the principle that all front-end programs protect the mail system against unreasonably-long inputs. True ETRN means kick the host out of the queue manager's "dead hosts" table & move mail from the "hold" queue for that site to the incoming queue. postfix-script: make sure that each queue file matches its file id or we might lose mail. postfix-script: do database fixups as the unprivileged user Maintain a pool of pre-allocated queue files, to eliminate file creation and deletion overhead.