Hi, as a follow up to this question - 1) in addition to sending the messages to a script, is there a way to store the messages in a real mailstore ( Maildir ) ? 2) can I return something from the script that would cause the message to get rejected, maybe even send a message back with an error code
virtual_transport = mailstore mailstore unix - n n - - pipe flags=DRXhu user=vmail argv=/path/to/script ${recipient} On Sat, Jan 4, 2020 at 3:26 PM Stats Student <stats.student4...@gmail.com> wrote: > > Thanks very much, appreciate the detailed explanation. Everything > seems to working as advertised. > > On Mon, Dec 30, 2019 at 7:32 AM Wietse Venema <wie...@porcupine.org> wrote: > > > > Wietse Venema: > > > Stats Student: > > > > Hi, I would like to configure Postfix to do the following: > > > > > > > > 1) receive messages for users in a Postgres database and hand those > > > > messages to an external script for processing (no traditional > > > > mailstore). The server handles mail for only one domain. > > > > With a few minor refinements: > > > > Postfix chooses the delivery method based on the recipient domain > > (the part on the right-hand side of the '@'). > > > > Here, we direct mail for example.com to your message store, and we > > make sure that all cronjob mail comes from r...@example.com, > > w...@example.com etc. > > > > This uses the name 'mailstore' for all things related to your > > database. Of course you can use a different name. > > > > /etc/postfix/main.cf > > virtual_transport = mailstore > > mailstore_destination_recipient_limit=1 > > virtual_mailbox_domains = example.com > > virtual_mailbox_maps = hash:/etc/postfix/mailstore-users > > myorigin = example.com > > mydestination = > > > > /etc/postfix/master.cf: > > # Requires mailstore_destination_recipient_limit=1 in main.cf. > > mailstore unix - n n - - pipe > > flags=DRXhu user=vmail argv=/path/to/script ${recipient}${recipient} > > > > /etc/postfix/mailstore-users: > > f...@example.com whatever > > b...@example.com whatever > > > > This requires that you have have a UNIX system account 'vmail' > > (command: useradd vmail). Of course you can use a different name. > > > > Once you have this working, replace hash:/etc/postfix/mailstore-users > > with a pgsql table that returns a non-emnpty string for existing > > users, and 'not found' otherwise. See "man pgsql_table", especially > > the section "LIST MEMBERSHIP". > > > > > 2) for a handful of accounts (postmaster, help, root), the messages > > > should be forwarded to another address (different domain). Would be > > > great for this forwarding to take place without going through the > > > processing script in (1). > > > > Use virtual_alias_maps: > > > > /etc/postfix/main.cf: > > virtual_alias_maps = hash:/etc/postfix/virtual > > > > /etc/postfix/virtual: > > postmaster user1@example > > root user2@example > > help user3@example > > > > No need to muck with content filters. > > > > Wietse