我们有一些客户端通过我们的邮件服务器发送邮件。为了批量发送邮件,我们将特定端口(在本例中为 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
任何帮助将非常感激!
谢谢!
为了能够诊断问题,您首先需要开始收集更多数据。您可以使用 /etc/postfix/main.cf 中的 debug_peer_level 和 debug_peer_list 选项。
例如
(如果不能提供足够的信息,请进一步提高调试级别)
一旦你得到了这些数据,你就可以确定来自 unica 系统的邮件是否真的进入了你的自定义过滤器(听起来好像不是)
SMTP 通过端口 25(这是一个标准),因此当您的客户端通过 Unica 系统发送时,它会发送到该端口。在您这边,监听端口 25 的 smtpd 进程对 inject.php 脚本一无所知。
您的客户端必须通过一个知道您使用非标准端口的系统发送邮件,无论是 MTA(SMTP 服务器)还是普通邮件客户端。或者你必须重新设计你的设置。
是的,您可以删除地址(请参阅
man 5 master
)。澄清一点,因为我们没有完全看到你的配置,也许你可以得到你想要的(未经测试)。如果您的客户端或其他任何东西没有发送到您的端口 1025,那么显然您可以根据发件人地址或域路由他的邮件。
对于真正详细的调试,我有时会做一个 tcpdump 并将其拉回 ethereal 以检查发生的确切 SMTP 会话。