Postfix
Postfix 通過 virtual_alias_maps 將外發電子郵件發回給我
我有一個 postfix 郵件伺服器設置為將所有電子郵件轉發到我的域,
*@example.com
,到單個虛擬郵箱:me@example.com
.我用這個配置做到了:
/etc/postfix/main.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf regexp:/etc/postfix/aliases-regexp
/etc/postfix/aliases-regexp (應該轉發任何還沒有去的東西
me@example.com
)!/me@example\.com/ me@example.com
接收郵件工作正常:
postfix/smtpd[5852]: connect from unknown[108.60.212.145] postfix/trivial-rewrite[5856]: warning: do not list domain example.com in BOTH virtual_mailbox_domains and relay_domains postfix/smtpd[5852]: E7D49E27: client=unknown[108.60.212.145] postfix/cleanup[5857]: E7D49E27: message-id=<a197d7118eaedfb5@be0fdfd65ca8aeb2> postfix/qmgr[5787]: E7D49E27: from=<test@ismyemailworking.com>, size=1700, nrcpt=1 (queue active) postfix/smtpd[5852]: disconnect from unknown[108.60.212.145] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5 postfix/pickup[5785]: 64CB91090: uid=1002 from=<test@ismyemailworking.com> postfix/cleanup[5857]: 64CB91090: message-id=<a197d7118eaedfb5@be0fdfd65ca8aeb2> postfix/qmgr[5787]: 64CB91090: from=<test@ismyemailworking.com>, size=2068, nrcpt=1 (queue active) postfix/trivial-rewrite[5856]: warning: do not list domain example.com in BOTH virtual_mailbox_domains and relay_domains postfix/pipe[5858]: E7D49E27: to=<me@example.com>, orig_to=<test8@example.com>, relay=spamassassin, delay=0.54, delays=0.13/0.01/0/0.4, dsn=2.0.0, status=sent (delivered via spamassassin service) postfix/qmgr[5787]: E7D49E27: removed postfix/lmtp[5862]: 64CB91090: to=<mail@example.com>, relay=fqdn.example.com[private/dovecot-lmtp], delay=0.08, delays=0.02/0.03/0.02/0.02, dsn=2.0.0, status=sent (250 2.0.0 <mail@example.com> 22w5HOfOilvnFgAASQqZ1w Saved) postfix/qmgr[5787]: 64CB91090: removed
注意這一行:
postfix/pipe[5858]: E7D49E27: to=<me@example.com>, orig_to=<test@example.com>, relay=spamassassin, delay=0.54, delays=0.13/0.01/0/0.4, dsn=2.0.0, status=sent (delivered via spamassassin service)
表明該消息的目的
test@example.com
是發送給me@example.com
. 這很好。不幸的是,它也發生在出路時。這會導致傳出消息被發回給我。postfix/lmtp[5862]: BA93CE27: to=<me@example.com>, orig_to=<test@ismyemailworking.com>, relay=fqdn.example.com[private/dovecot-lmtp], delay=0.22, delays=0.19/0/0.02/0.02, dsn=2.0.0, status=sent (250 2.0.0 <me@example.com> QzBoOSXPiluGGAAASQqZ1w Saved)
這是發送郵件時的完整日誌:
postfix/trivial-rewrite[5856]: warning: do not list domain example.com in BOTH virtual_mailbox_domains and relay_domains postfix/submission/smtpd[6260]: BA93CE27: client=mail-pl1-f178.google.com[209.85.214.178], sasl_method=PLAIN, sasl_username=me@example.com postfix/cleanup[5857]: BA93CE27: message-id=<CAHgoK_pUF=7qQ+fCRYcqKBPGqxK1fin-AjjoY5xr0GuUeDScow@mail.gmail.com> postfix/qmgr[5787]: BA93CE27: from=<me@example.com>, size=4192, nrcpt=1 (queue active) postfix/trivial-rewrite[5856]: warning: do not list domain example.com in BOTH virtual_mailbox_domains and relay_domains postfix/lmtp[5862]: BA93CE27: to=<me@example.com>, orig_to=<test@ismyemailworking.com>, relay=fqdn.example.com[private/dovecot-lmtp], delay=0.22, delays=0.19/0/0.02/0.02, dsn=2.0.0, status=sent (250 2.0.0 <me@example.com> QzBoOSXPiluGGAAASQqZ1w Saved) postfix/qmgr[5787]: BA93CE27: removed
結果是我的消息似乎沒有發送,我什至沒有收到錯誤消息。
在 Postfix 中為域創建包羅萬象的選項有很多,您的選項相當複雜。通常的方法是擁有
virtual_alias_maps = hash:/etc/postfix/virtual
with@example.com me
。postmap /etc/postfix/virtual
使用時請記住hash:
。
我通過更改
/etc/postfix/aliases-regexp
為:if /(.*)@example.com/ !/me@example\.com/ me@example.com endif
if 語句首先檢查郵件是否發送到域,其中不包括外發郵件。