
我們有一些客戶透過我們的郵件伺服器發送郵件。為了大量發送郵件,我們將特定連接埠(在本例中為 1025)上的所有郵件轉送至接受腳本,該腳本將詳細資訊儲存在 MySQL 中以進行批次處理。當我測試這個時,它工作得很好,當客戶端測試時,它工作得很好,但是,當他們從他們的 Unica 系統發出時,看起來郵件直接經過腳本並進入郵件流。這可能嗎?
以下是 master.cf 中的行
000.000.000.000:1025 inet n - - - 0 smtpd
-o mynetworks=hash:/etc/postfix/injector/networks
-o content_filter=clientid:
-o syslog_name=clientid
-o smtpd_timeout=1800s
clientid unix - n n - 0 pipe
flags=q user=filter argv=/var/injector/inject.php clntid
任何幫助將非常感激!
謝謝!
答案1
為了能夠診斷問題,您首先需要開始收集更多數據。您可以使用 /etc/postfix/main.cf 中的 debug_peer_level 和 debug_peer_list 選項。
例如
debug_peer_list=UNICA.SERVER.IP.ADDRESS debug_peer_level=2
(如果無法提供足夠的信息,請進一步提高調試等級)
一旦獲得這些數據,您將能夠確定來自 unica 系統的郵件是否實際上會發送到您的自訂過濾器(聽起來好像沒有)
答案2
SMTP 透過連接埠 25(這是標準),因此當您的用戶端透過 Unica 系統發送時,它會傳送到該連接埠。在您這邊,監聽連接埠 25 的 smtpd 進程對inject.php 腳本一無所知。
您的用戶端必須透過知道您使用非標準連接埠的系統(MTA(SMTP 伺服器)或普通郵件用戶端)傳送郵件。或者你必須重新設計你的設定。
是的,您可以刪除該位址(請參閱man 5 master
)。
澄清一下,由於我們沒有完全看到您的配置,也許您可以獲得您想要的東西(未經測試)。如果您的用戶端或其他什麼不會傳送到您的連接埠 1025,那麼顯然您可以根據寄件者位址或網域路由他的郵件。
/etc/postfix/main.cf:
sender_dependent_relayhost_maps = /etc/postfix/my_special_client
/etc/postfix/my_special_client:
@example.com 127.0.0.1:1025
# postmap /etc/postfix/my_special_client
# postfix stop && postfix start
答案3
對於真正詳細的調試,我有時會執行 tcpdump 並將其拉回 ethereal 中以檢查發生的確切 SMTP 會話。
tcpdump -i any -s 1500 -w /tmp/some-file.dump host ip.of.your.client