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.服务器.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

相关内容