使用标准的 Ubuntu postfix 设置(Ubuntu 22.04),我想按如下方式过滤邮件:
- 传入提交和 smtps(绝大多数邮件):SPF 和 RBL 检查(我使用的是policyd.pl),然后使用 Amavis 通过 spamassassin 和 clamav 检查。
- 来自外部网络上的客户端的经过 Sasl 验证的邮件:速率限制/检查(我正在使用
postfwd
该功能),然后 Amavis 检查,但不检查 SPF 和 RBL(因为我们不想根据客户端的发送网络拒绝)。
我是否正确地认为,如果我让 Amavis 检查链中的最后一个,并且仅在 master.cf“重新进入”侦听器中具有许可选项,我可以确保来自 sasl 身份验证的用户的邮件不会收到和其他邮件一样的支票吗?例如:
smtpd_client_restrictions =
permit_mynetworks,
# Rate limiting with postfwd:
check_policy_service inet:127.0.0.1:10040,
permit_sasl_authenticated,
# RBLs, SPF with policyd.pl:
check_policy_service unix:private/senderCheck
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
...,
[various reject_* lines here],
...,
# Amavis checks last:
content_filter = smtp-amavis:[127.0.0.1]:10024,
permit
然后在 master.cf 中将 Amavis“重新进入”配置为:
127.0.0.1:10025 inet n - - - - smtpd
-o syslog_name=amavis-reentry
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=
-o smtpd_data_restrictions=
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
编辑:作为参考,这是我目前在 master.cf 中的 smtpd 配置:
smtp inet n - n - - smtpd
-o smtpd_sasl_auth_enable=no
-o smtpd_discard_ehlo_keywords=silent-discard,dsn
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_key_file=/etc/letsencrypt/live/smtp.xxx/privkey.pem
-o smtpd_tls_cert_file=/etc/letsencrypt/live/smtp.xxx/fullchain.pem
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_tls_security_level=may
-o smtpd_tls_key_file=/etc/letsencrypt/live/smtp.xxx/privkey.pem
-o smtpd_tls_cert_file=/etc/letsencrypt/live/smtp.xxx/fullchain.pem
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
通常会有多个
smptd
守护进程实例用于不同目的,就像为 Amavis 配置实例一样127.0.0.1:10025
。可以master.cf
覆盖main.cf
所述实例的设置。这
content_filter
不是一个smtpd_recipient_restrictions
限制,而是一个单独的配置参数。以下是使用Dovecot进行Postfix SASL
tcp/465
身份验证的 smtps ( ) 实例的示例:此处,限制优先于以下内容
main.cf
:smtpd_client_restrictions
了policyd.pl
基于策略的策略,但保留了postfwd
速率限制。smtpd_recipient_restrictions
一小部分reject_
与出站邮件相关的限制。permit_mynetworks
已从两者中删除,因为这是明确针对经过身份验证的用户的。我会添加类似的内容以防止用户使用彼此的地址:
Postfix和 Dovecot SASL文档有一个提交协议的示例,但RFC 8314已废弃它,并且应使用隐式 TLS ( 3.3 )即端口上的提交。
465