我们的后缀邮件服务器使用Amavis与垃圾邮件杀手进行垃圾邮件和病毒扫描。我们在某种程度上设置了它,postfix将邮件转发给amavis,然后amavis将电子邮件重新排队回postfix发送到目的地。我已经设置postfwd与一个简单的规则,拒绝邮件后,为发送者的门槛,但Postfwd是双重计算的电子邮件。当我通过Outlook作为邮件客户端发送一封电子邮件时,Postfwd将其计算为两封。我是新的SMTP协议,并正在努力解决这个问题。如果有人能帮忙的话。我已经粘贴了一些配置片段,我认为在下面将是有用的。
下面是postconf -n的输出
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
content_filter = amavis:[127.0.0.1]:10024
disable_vrfy_command = yes
dovecot_destination_recipient_limit = 1
enable_original_recipient = no
header_checks = regexp:/etc/postfix/header_checks
inet_interfaces = all
mailbox_size_limit = 0
maximal_backoff_time = 8000s
maximal_queue_lifetime = 7d
minimal_backoff_time = 1000s
mydestination = $myhostname
myhostname = pXXX
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128,XXX
mynetworks_style = host
myorigin = /etc/hostname
readme_directory = no
recipient_delimiter = +
relay_domains = hash:/etc/postfix/relay_recipients
smtp_enforce_tls = no
smtp_helo_timeout = 60s
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = may
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_client_connection_count_limit = 30
smtpd_client_recipient_rate_limit = 300
smtpd_client_restrictions = permit_mynetworks, permit_sasl_authenticated, check_client_access hash:/etc/postfix/whitelist, reject_rbl_client sbl.spamhaus.org
smtpd_data_restrictions = reject_unauth_pipelining
smtpd_delay_reject = yes
smtpd_enforce_tls = no
smtpd_hard_error_limit = 12
smtpd_helo_required = yes
smtpd_helo_restrictions = check_client_access hash:/etc/postfix/whitelist, permit_mynetworks, warn_if_reject reject_non_fqdn_hostname, reject_invalid_hostname
smtpd_recipient_limit = 30
smtpd_recipient_restrictions = reject_unauth_pipelining, check_policy_service inet:127.0.0.1:10040, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023
smtpd_relay_restrictions = permit_mynetworks, check_client_access hash:/etc/postfix/whitelist, check_sender_access hash:/etc/postfix/whitelist, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_destination, check_policy_service inet:127.0.0.1:10023
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain =
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/sender_access, permit_sasl_authenticated, permit_mynetworks, reject_unknown_sender_domain, reject_unauth_pipelining, warn_if_reject reject_sender_login_mismatch, warn_if_reject reject_non_fqdn_sender, warn_if_reject reject_unlisted_sender, warn_if_reject reject_non_fqdn_sender
smtpd_soft_error_limit = 3
smtpd_tls_cert_file = XXX
smtpd_tls_key_file = XXX
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 450
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf, proxy:mysql:/etc/postfix/mysql_virtual_alias_domainaliases_maps.cf
virtual_gid_maps = static:125
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf, proxy:mysql:/etc/postfix/mysql_virtual_mailbox_domainaliases_maps.cf
virtual_transport = dovecot
virtual_uid_maps = static:150邮政后管理规则:
id=20perminute; sender=~/Xxxx@xxx.com/; action=rate(sender/20/60/REJECT only 20 messages per minute for $sender)有人能帮我解释一下这个问题吗?
发布于 2021-06-11 07:03:48
但是..。你已经发现了几乎所有东西!
您有一个附加的smtpd服务,通常在master.cf中设置如下:
smtp:10025 inet n - n - - smtpd
...Amavis配置为将邮件重新弹出回127.0.0.1:10025 (或您使用的任何端口)。其思想是:您在非默认的防火墙端口上运行特殊的私有服务,只接受处理过的邮件。
这种配置的工作方式如下:
smtpd实例,即邮件交换或提交,接收来自外部的邮件并第一次记录它(并调用策略服务)。smtpd实例,该实例配置为不将邮件发回给Amavis,因为它希望所有邮件都来自Amavis。smtpd再次记录邮件(并调用策略服务),然后按照通常的规则转发邮件。在这种设置中无法修复双重日志记录,因为它是由这种通过SMTP将Amavis插入到处理过程中的劣等方式造成的。但你还是有办法至少减少这种双重记录的影响。您可以为您的附加smtpd实例提供不同的日志前缀,从而创建一种方式来区分这一次处理邮件的方式。在定义附加smtpd服务的行之后,添加行:
-o syslog_name=postfix/reinject(或用于将其与其他smtpd实例、邮件交换机和提交分离开来的任何内容)。
此外,您可能会禁用此实例的策略服务处理,因此postfwd不会对邮件进行两次计数。您必须在此服务的smtpd_*_restrictions中复制master.cf中的所有策略服务,但不包括此策略服务:
...
-o smtpd_recipient_restrictions=...,reject_unauth_destination
...never在 master.cf -o参数中放置空格!
很乱,我知道。这是因为这整个设置与再注入是混乱的。
您可能已经有了一些其他参数;没关系,它们仍然是必需的。还请注意,这只会改变smtpd日志记录行为;然后它会将邮件放入公共队列中,其他守护进程在该队列中获取并处理邮件,而且由于我们没有为它们创建特殊的日志记录配置,您将无法轻松区分它们是处理原始邮件还是处理这一次(提示:邮件队列ID对此很有用)。因此,这只是一个部分修复,但仍然是非常有用的。
要完全修复这个双重日志记录,您必须重新设计您的邮件系统,使任何一个邮件都不会通过它两次。所以每封邮件都会被计算一次,就像用魔法一样。Postfix有一种特殊的邮件处理方法,称为milter (“邮件筛选器”),建议您使用它而不是SMTP和reinjecting。您可以通过这个接口连接Amavis或任何其他支持milter的应用程序(其中有无数),您将在邮件系统中获得更干净的邮件路由路径,并减少与日志和其他问题的麻烦。后缀将立即拒绝垃圾邮件,而不是排队,检查,然后删除。阅读后缀关于后缀队列前缓冲器支持的完美手册
https://serverfault.com/questions/1066381
复制相似问题