Postfix
postfix 中的中間隊列
我正在嘗試使用 postfix + policyd/amavis + mysql white/blacklist 查找來實現郵件伺服器。
問題是我希望它們之間有“中間”隊列,以防其中一個失敗,電子郵件不會被拒絕並保持在隊列中,直到故障點恢復。
我的想法如下:
postfix(25) -> queue -> mysql 白/黑名單查找 (RBL) -> queue -> policyd(10031)/amavis(10014) -> queue -> dspam(sock) -> postfix(10025)/relay
有了這個想法,如果其中一個“中間”點失敗,我不會失去任何電子郵件,並且所有電子郵件都將保留在隊列中。
我的配置是:main.cf
... transport_maps = ldap:/etc/postfix/perditionMailhost_ldap content_filter = amavisd-new:[127.0.0.1]:10024 ... smtpd_recipient_restrictions = reject_invalid_hostname, check_client_access mysql:/etc/postfix/client_whitelist check_sender_access mysql:/etc/postfix/sender_whitelist check_recipient_access mysql:/etc/postfix/recipient_whitelist reject_rbl_client multi.uribl.com, reject_rbl_client dsn.rfc-ignorant.org, reject_rbl_client dul.dnsbl.sorbs.net, reject_rbl_client list.dsbl.org, reject_rbl_client sbl-xbl.spamhaus.org, reject_rbl_client bl.spamcop.net, reject_rbl_client dnsbl.sorbs.net, reject_rbl_client cbl.abuseat.org, reject_rbl_client ix.dnsbl.manitu.net, reject_rbl_client combined.rbl.msrbl.net, reject_rbl_client rabl.nuclearelephant.com, check_policy_service inet:127.0.0.1:10031, permit_mynetworks, reject smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:10031 smtpd_helo_required = yes disable_vrfy_command = yes invalid_hostname_reject_code = 554 non_fqdn_reject_code = 554 ...
master.cf
smtp inet n - n - 200 smtpd -v pickup fifo n - n 60 1 pickup cleanup unix n - n - 0 cleanup qmgr fifo n - n 300 1 qmgr tlsmgr unix - - n 1000? 1 tlsmgr rewrite unix - - n - - trivial-rewrite bounce unix - - n - 0 bounce defer unix - - n - 0 bounce trace unix - - n - 0 bounce verify unix - - n - 1 verify flush unix n - n 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - n - - smtp amavisd-new unix - - n - 2 smtp -o smtp_data_done_timeout=1200s -o disable_dns_lookups=yes relay unix - - n - - smtp -o smtp_fallback_relay= -o disable_dns_lookups=yes showq unix n - n - - showq error unix - - n - - error retry unix - - n - - error discard unix - - n - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - n - - lmtp anvil unix - - n - 1 anvil scache unix - - n - 1 scache 127.0.0.1:10025 inet n - n - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes
任何幫助如何做到這一點?甚至,我不確定這是否可能。
感謝和問候。
您需要一個額外的後綴 smtp 實例,監聽中間隊列的不同埠。
處理應該是這樣的:
- 埠 25 上的 smtp 接收傳入的電子郵件。
- 轉發到 amavisd 的電子郵件,由 main.cf 中的 content_filter 指令選擇
- amavisd 將電子郵件注入到中間新的 smtp 程序,監聽某個埠,例如 11025。您需要在 amavisd 配置中進行設置:
$forward_method = 'smtp:[127.0.0.1]:1025';
中間 smtp 應該有 content_filer 指令,指向 dspam,127.0.0.1:11025 inet n - n - - smtpd -o content_filter=dspam:
- 應該有管道過程,讓電子郵件做 dspam。
- dspam 將電子郵件發送到埠 10025 上的最後一個 smtp,並且您已經擁有配置。