On 2013-06-25 Tue 14:38 PM |, Viktor Dukhovni wrote: > > > Jun 25 14:04:08 server1 postfix/pickup[29023]: 51B8367E0: uid=7432 > > from=<admin-acct> > > Jun 25 14:04:08 server1 postfix/cleanup[154]: 51B8367E0: > > message-id=<20130625130408.51b836...@server1.example.com> > > Jun 25 14:04:08 server1 postfix/qmgr[6613]: 51B8367E0: > > from=<server.ad...@example.com>, size=389, nrcpt=1 (queue active) > > Jun 25 14:04:08 server1 postfix/trivial-rewrite[2958]: warning: do not list > > domain example.com in BOTH mydestination and virtual_alias_domains > > This configuration is not what you claim above, stop wasting the list's > time with misleading reports.
Viktor, you deleted/ignored the part where I stated that I'd changed it: On 2013-06-25 Tue 14:53 PM |, Craig R. Skinner wrote: > > However, alias expansion does occur when I do the NAUGHTY thing of > including $mydomain in $mydestination. It's clear enough if you read what I wrote. > > > Jun 25 14:04:08 server1 postfix/lmtp[30743]: 51B8367E0: > > to=<admin-a...@example.com>, orig_to=<daemon>, > > relay=server1.example.com[private/dovecot-lmtp], delay=0.07, > > delays=0.02/0/0.01/0.03, dsn=2.0.0, status=sent (250 2.0.0 > > <admin-a...@example.com> wCqpOjmVyVF/agAANm01jw Saved) > > Were example.com in virtual_alias_domains, this message would have bounced. > That might be what you'd like to happen. I don't see Postfix acting that way. Here in more detail (deliberately including mydomain in mydestination): $ postconf \ config_directory \ alias_database \ alias_maps \ mydomain \ myorigin \ mydestination \ virtual_alias_domains \ virtual_alias_maps \ mailbox_transport \ sender_canonical_maps \ masquerade_domains \ remote_header_rewrite_domain \ local_recipient_maps \ mail_spool_directory \ append_dot_mydomain \ local_transport config_directory = /etc/postfix alias_database = btree:$config_directory/aliases alias_maps = $alias_database mydomain = example.com myorigin = $mydomain mydestination = localhost, localhost.$mydomain, $mydomain virtual_alias_domains = example.com virtual_alias_maps = btree:$config_directory/virtual_alias_maps.map mailbox_transport = lmtp:unix:private/dovecot-lmtp sender_canonical_maps = btree:$config_directory/canonical.map masquerade_domains = $virtual_alias_domains remote_header_rewrite_domain = address.invalid local_recipient_maps = proxy:unix:passwd.byname $alias_maps mail_spool_directory = /var/mail/ append_dot_mydomain = yes local_transport = local:$myhostname $ postmap -q daemon btree:/etc/postfix/aliases root $ postmap -q root btree:/etc/postfix/aliases admin-acct $ postmap -q daemon btree:/etc/postfix/virtual_alias_maps.map [nothing] $ postmap -q root btree:/etc/postfix/virtual_alias_maps.map [nothing] $ postmap -q server.admin btree:/etc/postfix/virtual_alias_maps.map admin-acct@localhost $ uname | mail -s uname daemon Jun 25 19:39:03 server1 postfix/pickup[23791]: 46C026764: uid=7432 from=<admin-acct> Jun 25 19:39:03 server1 postfix/cleanup[4734]: 46C026764: message-id=<20130625183903.46c026...@server1.example.com> Jun 25 19:39:03 server1 postfix/qmgr[7589]: 46C026764: from=<server.ad...@example.com>, size=328, nrcpt=1 (queue active) Jun 25 19:39:03 server1 postfix/trivial-rewrite[30793]: warning: do not list domain example.com in BOTH mydestination and virtual_alias_domains Jun 25 19:39:03 server1 postfix/trivial-rewrite[30793]: warning: do not list domain example.com in BOTH mydestination and virtual_alias_domains Jun 25 19:39:03 server1 postfix/trivial-rewrite[30793]: warning: do not list domain example.com in BOTH mydestination and virtual_alias_domains Jun 25 19:39:03 server1 dovecot: lmtp(23729): Connect from local Jun 25 19:39:03 server1 dovecot: lmtp(23729, admin-acct): 6epMMMfjyVGxXAAANm01jw: sieve: msgid=<20130625183903.46c026...@server1.example.com>: stored mail into mailbox 'INBOX' Jun 25 19:39:04 server1 postfix/lmtp[19198]: 46C026764: to=<admin-a...@example.com>, orig_to=<daemon>, relay=server1.example.com[private/dovecot-lmtp], delay=0.78, delays=0.14/0.07/0.39/0.19, dsn=2.0.0, status=sent (250 2.0.0 <admin-a...@example.com> 6epMMMfjyVGxXAAANm01jw Saved) Jun 25 19:39:04 server1 dovecot: lmtp(23729): Disconnect from local: Client quit (in reset) Jun 25 19:39:04 server1 postfix/qmgr[7589]: 46C026764: removed Log evidence of no bounce when the mydomain is both in mydestination & virtual_alias_domains. Also log evidence of aliases being parsed. > > Comments? > > 0. All address -> address mappings in virtual(5). > > 1. No address-> address mappings in aliases(5). > > 2. localhost and localhost.$mydomain only in mydestionation. > > 3. Your domain in virtual_alias_domains and myorigin. > > 4. In virtual(5) the LHS and RHS of all lookup keys include @domain: > > al...@example.com u...@example.com, otheru...@example.com > u...@example.com useracct@localhost > otheru...@example.com otheracct@localhost > > 5. Nothing in aliases(5) except aliases whose RHS is a ":include:" file > if you need that feature (mailing list manager integration). This is what I stated worked for me an earlier mail: On 2013-06-21 Fri 20:57 PM |, Craig R. Skinner wrote: > > Thanks Viktor, this set up works with making the machines domain name > virtual for Postfix, accepting mail for pretty addresses & rejecting > remote mail for MOST Unix accounts, while accepting local mail to Unix > accounts, IF listed as virtual aliases (mutt, sendmail, cron,....): > .. .. .. > > It seems the aliases file is not used. I've got root, postmaster, > abuse, hostmaster, etc. in virtual_alias_maps.map. Should the other > traditional aliases of MAILER-DAEMON, bin, dumper, etc. be in there > too? > On 2013-06-21 Fri 22:08 PM |, Jeroen Geilman wrote: > >It seems the aliases file is not used. > > Of course it is used, for any destinations in $mydestination. > On 2013-06-24 Mon 15:12 PM |, Craig R. Skinner wrote: > > Thanks winning team (& Dr. Seuss too) for the quality education. > > I'm about getting it now. > > This set up works:- > ... ... > > aliases: > [empty] > > virtual_alias_maps.map: > # example.com: ($myorigin) > # Re-mapped from aliases(5): # Are they all needed these days??? > postmaster postmaster@localhost > abuse postmas...@example.com > root admin-acct@localhost > MAILER-DAEMON postmas...@example.com > bin r...@example.com > daemon r...@example.com > named hostmas...@example.com ... ... However, Wietse replied to a later email with: On 2013-06-22 Sat 17:10 PM |, Wietse Venema wrote: > I agree with Viktor's description: > ... ... > > # Legacy sendmail-style aliases: > /etc/aliases: > # Here, no @domain in LHS or RHS. > postmaster: unixaccount > abuse: unixaccount > Therefore I tried moving some 'traditional' aliases back from virtual_alias_maps into aliases to test - and that's where it all fell apart:- The summary I hear from Viktor: is 'put it all in virtual' And from Wietse effectively: 'plain aliases will still work' I'm confused because both situations do not work, unless mydomain is in mydestination, which Postfix complains about. I've accurately followed the mixed instructions & tested each. > > 6. Handle "| command" aliases via .forward files of a designated > account, rather than in the system aliases file. > > 7. Did I mention no address to address (or if you like account to > account, address to account, account to address, ...) mappings in > aliases(5)? Plase all of these in virtual(5). > Yes, see above. > 8. When testing, stop Postfix, check the configuration is what you want > to test and save "postconf -n" output. Start Postfix and run your > tests. Then report log entries that postdate the most recent Postfix > stop/start. > > 9. Don't tinker with the configuration mid-test and report logs that > don't match the reported configuration. > > 11. Yes local aliases(5) will still work when useracct@localhost is > processed by local(8), but best practice is to avoid user accounts as > lookup keys in /etc/aliases. OK. I'll forget that as useracct@localhost is rather unlikely. Either of these is more common day to day: *) useracct (from local processes) *) user.a...@example.com (via smtpd) > > 12. Local aliases(5) are not consulted when an address is missing > from virtual(5). If you send email to "miss...@example.com" with > miss...@example.com not listed in virtual(5), then having an entry of > the form "missing: user" in aliases(5) will not help. You must > include: > > miss...@example.com missing@localhost > > for missing to then be looked up in aliases(5), but if > missing needs to be sent to a different user, you should > use virtual(5) for that! See 1 and 7 above. Basically, > in most cases aliases(5) can and should be empty. As I had before: On 2013-06-24 Mon 15:12 PM |, Craig R. Skinner wrote: > > aliases: > [empty] > > > 13. You can even set: > > alias_database = > alias_maps = > > and the question of whether aliases(5) lookups works becomes moot. > You'll only need aliases(5) for mailing list manager support, with > aliases(5) files that belong to the list manager account, so that > pipe commands there run under the correct account. > OK, that's all clear now. $ postmap -q daemon btree:/etc/postfix/aliases [nothing] $ postmap -q root btree:/etc/postfix/aliases [nothing] $ postmap -q daemon btree:/etc/postfix/virtual_alias_maps.map r...@example.com $ postmap -q root btree:/etc/postfix/virtual_alias_maps.map admin-acct@localhost $ postconf \ config_directory \ alias_database \ alias_maps \ mydomain \ myorigin \ mydestination \ virtual_alias_domains \ virtual_alias_maps \ mailbox_transport \ sender_canonical_maps \ masquerade_domains \ remote_header_rewrite_domain \ local_recipient_maps \ mail_spool_directory \ append_dot_mydomain \ local_transport config_directory = /etc/postfix alias_database = alias_maps = mydomain = example.com myorigin = $mydomain mydestination = localhost, localhost.$mydomain virtual_alias_domains = example.com virtual_alias_maps = btree:$config_directory/virtual_alias_maps.map mailbox_transport = lmtp:unix:private/dovecot-lmtp sender_canonical_maps = btree:$config_directory/canonical.map masquerade_domains = $virtual_alias_domains remote_header_rewrite_domain = address.invalid local_recipient_maps = proxy:unix:passwd.byname $alias_maps mail_spool_directory = /var/mail/ append_dot_mydomain = yes local_transport = local:$myhostname $ uname | mail -s uname daemon Jun 25 20:30:49 server1 postfix/pickup[9331]: B347067D2: uid=7432 from=<admin-acct> Jun 25 20:30:49 server1 postfix/cleanup[12470]: B347067D2: message-id=<20130625193049.b34706...@server1.example.com> Jun 25 20:30:49 server1 postfix/qmgr[27612]: B347067D2: from=<server.ad...@example.com>, size=328, nrcpt=1 (queue active) Jun 25 20:30:50 server1 dovecot: lmtp(32687): Connect from local Jun 25 20:30:50 server1 dovecot: lmtp(32687, admin-acct): hheEDurvyVGvfwAANm01jw: sieve: msgid=<20130625193049.b34706...@server1.example.com>: stored mail into mailbox 'INBOX' Jun 25 20:30:50 server1 postfix/lmtp[8423]: B347067D2: to=<admin-a...@localhost.example.com>, orig_to=<daemon>, relay=server1.example.com[private/dovecot-lmtp], delay=0.78, delays=0.15/0.06/0.38/0.19, dsn=2.0.0, status=sent (250 2.0.0 <admin-a...@localhost.example.com> hheEDurvyVGvfwAANm01jw Saved) Jun 25 20:30:50 server1 dovecot: lmtp(32687): Disconnect from local: Client quit (in reset) Jun 25 20:30:50 server1 postfix/qmgr[27612]: B347067D2: removed $ uname | mail -s uname server.admin Jun 25 20:31:57 server1 postfix/pickup[9331]: 4FDA567D2: uid=7432 from=<admin-acct> Jun 25 20:31:57 server1 postfix/cleanup[12470]: 4FDA567D2: message-id=<20130625193157.4fda56...@server1.example.com> Jun 25 20:31:57 server1 postfix/qmgr[27612]: 4FDA567D2: from=<server.ad...@example.com>, size=329, nrcpt=1 (queue active) Jun 25 20:31:57 server1 dovecot: lmtp(15765): Connect from local Jun 25 20:31:57 server1 dovecot: lmtp(15765, admin-acct): qYkuGC3wyVGVPQAANm01jw: sieve: msgid=<20130625193157.4fda56...@server1.example.com>: stored mail into mailbox 'INBOX' Jun 25 20:31:57 server1 postfix/lmtp[8423]: 4FDA567D2: to=<admin-a...@localhost.example.com>, orig_to=<server.admin>, relay=server1.example.com[private/dovecot-lmtp], delay=0.22, delays=0.02/0/0.06/0.13, dsn=2.0.0, status=sent (250 2.0.0 <admin-a...@localhost.example.com> qYkuGC3wyVGVPQAANm01jw Saved) Jun 25 20:31:57 server1 dovecot: lmtp(15765): Disconnect from local: Client quit (in reset) Jun 25 20:31:57 server1 postfix/qmgr[27612]: 4FDA567D2: removed $ uname | mail -s uname server.ad...@example.com Jun 25 20:33:23 server1 postfix/pickup[9331]: 10DBA67D2: uid=7432 from=<admin-acct> Jun 25 20:33:23 server1 postfix/cleanup[12470]: 10DBA67D2: message-id=<20130625193323.10dba6...@server1.example.com> Jun 25 20:33:23 server1 postfix/qmgr[27612]: 10DBA67D2: from=<server.ad...@example.com>, size=329, nrcpt=1 (queue active) Jun 25 20:33:23 server1 dovecot: lmtp(9968): Connect from local Jun 25 20:33:23 server1 dovecot: lmtp(9968, admin-acct): 86tLCYPwyVHwJgAANm01jw: sieve: msgid=<20130625193323.10dba6...@server1.example.com>: stored mail into mailbox 'INBOX' Jun 25 20:33:23 server1 postfix/lmtp[8423]: 10DBA67D2: to=<admin-a...@localhost.example.com>, orig_to=<server.ad...@example.com>, relay=server1.example.com[private/dovecot-lmtp], delay=0.23, delays=0.03/0.01/0.07/0.13, dsn=2.0.0, status=sent (250 2.0.0 <admin-a...@localhost.example.com> 86tLCYPwyVHwJgAANm01jw Saved) Jun 25 20:33:23 server1 dovecot: lmtp(9968): Disconnect from local: Client quit (in reset) Jun 25 20:33:23 server1 postfix/qmgr[27612]: 10DBA67D2: removed It doesn't work with local mail to unix accounts, which I want. $ uname | mail -s uname admin-acct Jun 25 20:34:37 server1 postfix/pickup[9331]: DC92C67D2: uid=7432 from=<admin-acct> Jun 25 20:34:37 server1 postfix/cleanup[12470]: DC92C67D2: message-id=<20130625193437.dc92c6...@server1.example.com> Jun 25 20:34:37 server1 postfix/qmgr[27612]: DC92C67D2: from=<server.ad...@example.com>, size=337, nrcpt=1 (queue active) Jun 25 20:34:38 server1 postfix/error[14142]: DC92C67D2: to=<admin-a...@example.com>, orig_to=<admin-acct>, relay=none, delay=0.17, delays=0.03/0.07/0/0.07, dsn=5.0.0, status=bounced (User unknown in virtual alias table) To solve that problem, I can replace sender_canonical_maps = btree:$config_directory/canonical.map with: canonical_maps = btree:$config_directory/canonical.map But then (naturally) smtpd also accepts remote mail for admin-a...@example.com, rather than just for server.ad...@example.com Which can be controlled with Stan's idea of rejecting specific Unix accounts via smtpd_recipient_restrictions check_recipient_access reject_system_accounts.map. Thanks everyone for all your combined help, -- Craig Skinner | http://twitter.com/Craig_Skinner | http://linkd.in/yGqkv7