我如何“过滤” postfix 生成的退回邮件?

我如何“过滤” postfix 生成的退回邮件?

我们使用高度定制配置的 postfix 2.7 和自定义 SMTPD(基于 qpsmtpd)进行垃圾邮件过滤。我们有一个新的要求,即通过我们的自定义 qpsmtpd 流程过滤 postfix 生成的退回邮件(不是为了内容过滤,而是为了相应地处理这些退回邮件)。

我们当前的配置(部分)如下所示:

主配置文件(仅显示定制):

2526      inet  n       -       -       -       0       cleanup
pickup    fifo  n       -       -       60      1       pickup
  -o content_filter=smtp:127.0.0.2

我们的 smtpd 通过直接与清理守护进程对话,将消息注入到端口 2526 上的 postfix。自定义 pickup 命令指示 postfix 将所有本地生成的邮件(来自 cron、nagios 或其他自定义脚本)移交给我们的自定义 smtpd。

问题是,此配置不会影响 postfix 生成的退回邮件,因为它们不经过 pickup 守护进程。

我尝试将相同的 content_filter 选项添加到反弹守护程序命令中,但似乎没有任何效果:

bounce    unix  -       -       -       -       0       bounce
-o content_filter=smtp:127.0.0.2
defer     unix  -       -       -       -       0       bounce
-o content_filter=smtp:127.0.0.2
trace     unix  -       -       -       -       0       bounce
-o content_filter=smtp:127.0.0.2

作为参考,这是我的主配置文件文件,以及:

biff = no
# TLS parameters
smtpd_tls_loglevel = 0
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache
smtp_tls_security_level = may

mydestination = $myhostname
alias_maps = proxy:pgsql:/etc/postfix/dc-aliases.cf
transport_maps = proxy:pgsql:/etc/postfix/dc-transport.cf

# This is enforced on incoming mail by QPSMTPD, so this is simply
# the upper possible bound (also enforced in defaults.pl)
message_size_limit = 262144000
mailbox_size_limit = 0

# We do our own message expiration, but if we set this to 0, then postfix
# will try each mail delivery only once, so instead we set it to 100 days
# (which is the max postfix seems to support)
maximal_queue_lifetime = 100d

hash_queue_depth = 1
hash_queue_names = deferred, defer, hold

我还尝试将 internal_mail_filter_classes 选项添加到 main.cf,但也没有影响:

internal_mail_filter_classes = bounce,notify

我愿意接受任何建议,包括以不同的方式处理我们当前的内容过滤循环。

如果我的问题不清楚,请告诉我,我会尽力澄清。

答案1

在这种情况下,你做的太复杂了。这是简单的方法。

您需要在您的 中包含这个(附加的)main.cf

notify_classes = resource, software, bounce, 2bounce
bounce_notice_recipient = [email protected]
2bounce_notice_recipient = [email protected]
transport_maps = hash:/etc/postfix/transport_maps   #or another file. See below.

/etc/postfix/transport_maps投入

[email protected]    smtp:127.0.0.2:25

然后postmap /etc/postfix/transport_maps。之后postfix reload或重新启动 Postfix。

这将通知[电子邮件保护]所有退回邮件的用户,由于据说该用户是通过 127.0.0.2:25 传输的,因此您可以通过该服务器获取所有这些邮件。根据您的环境替换地址/IP/端口。

相关内容