Postfix 在特定連接埠上接受郵件

Postfix 在特定連接埠上接受郵件

我們有一些客戶透過我們的郵件伺服器發送郵件。為了大量發送郵件,我們將特定連接埠(在本例中為 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

相關內容