我们有一些客户端通过我们的邮件服务器发送邮件。为了批量发送邮件,我们将特定端口(在本例中为 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.服务器.IP.地址 调试同级=2
(如果提供的信息不够,请进一步增加调试级别)
一旦获得了这些数据,您就可以确定来自 unica 系统的邮件是否确实发送到您的自定义过滤器(听起来好像不是)
答案2
SMTP 通过端口 25(这是标准),因此当您的客户端通过 Unica 系统发送时,它会发送到该端口。在您这边,监听端口 25 的 smtpd 进程对 injection.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