Postfix接受特定端口上的邮件

我们有一些客户通过我们的邮件服务器发送邮件。 为了批量发送邮件,我们把所有的邮件发送到特定的端口(在这种情况下是1025),转发到一个接受脚本,该脚本将详细信息保存在MySQL中进行批处理。 当我testing这个,它完美的工作,当客户端testing时,它完美的工作,但是,当他们从他们的Unica系统发出时,它看起来像邮件直接通过脚本,并进入邮件stream。 这可能吗?

这里是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 - nn - 0 pipe flags=q user=filter argv=/var/injector/inject.php clntid 

任何帮助将非常感激!

谢谢!

为了能够诊断问题,您首先需要开始收集更多的数据。 您可以使用/etc/postfix/main.cf中的debug_peer_level和debug_peer_list选项。

例如

 debug_peer_list = UNICA.SERVER.IP.ADDRESS
 debug_peer_level = 2

(如果没有提供足够的信息,则进一步增加debugging级别)

一旦你有了这些数据,你就可以确定来自unica系统的邮件是否真的去了你的自定义filter(听起来好像不是这样)

SMTP通过端口25(这是一个标准),所以当你的客户端通过Unica系统发送,它发送到该端口。 就你而言,侦听端口25的smtpd进程对于inject.php脚本一无所知。

您的客户端必须通过知道您使用非标准端口的系统进行发送,可以是MTA(SMTP服务器)或普通邮件客户端。 或者你必须重新devise你的设置。

是的,你可以删除地址(见man 5 master )。

澄清一下,因为我们没有完全看到你的configuration,也许你可以得到你想要的(未经testing)。 如果你的客户端,或者别的什么都不发送到你的端口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 

对于真正详细的debugging,我有时会做一个tcpdump,然后把它拖回到空灵处,以检查发生的确切的SMTP会话。

 tcpdump -i any -s 1500 -w /tmp/some-file.dump host ip.of.your.client