如何防止 Postfix 的服务器被日志文件和丢弃的电子邮件填满

如何防止 Postfix 的服务器被日志文件和丢弃的电子邮件填满

我的服务器被用作 smtp 中继时遇到了问题。我想我已经解决了这个问题,但现在我的 mail.log 和排队的传入电子邮件都满了。显然,postfix 阻止了邮件,但它在执行此操作时会写入日志文件。我使用 postfix 转发我控制的域的电子邮件。我如何进一步阻止电子邮件到达我的服务器,或防止日志填满。我确信这对我的服务器来说也很繁重,因为它一直在填满。我如何设置我的邮件服务日志?我已经轮换了它,但邮件日志变得非常大。我如何让被拒绝的电子邮件直接进入垃圾箱?

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
compatibility_level = 550
default_process_limit = 100
disable_vrfy_command = yes
header_size_limit = 51200
inet_interfaces = all
inet_protocols = all
invalid_hostname_reject_code = 550
mailbox_size_limit = 0
maximal_backoff_time = 3h
message_size_limit = 10485760
minimal_backoff_time = 180s
mydestination = localhost.$mydomain, localhost, $mydomain
mydomain = <mydomain>
myhostname = <mydomain>
mynetworks = 127.0.0.1
myorigin = $mydomain
non_fqdn_reject_code = 550
queue_minfree = 20971520
readme_directory = no
recipient_delimiter = +
relayhost = smtp.<mydomain>
smtp_always_send_ehlo = yes
smtp_generic_maps = hash:/etc/postfix/generic
smtp_helo_timeout = 15s
smtp_rcpt_timeout = 15s
smtp_sasl_auth_enable = yes
smtp_sasl_mechanism_filter = AUTH LOGIN
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_tls_security_level = may
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_client_connection_count_limit = 10
smtpd_client_connection_rate_limit = 30
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_helo_hostname,   reject_non_fqdn_helo_hostname, reject_unknown_helo_hostname
smtpd_recipient_limit = 40
smtpd_recipient_restrictions = permit_sasl_authenticated,    permit_mynetworks, reject_unauth_destination,   reject_unknown_sender_domain, reject_non_fqdn_recipient,  reject_unknown_recipient_domain, reject_unlisted_recipient,  reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks,   permit_sasl_authenticated, defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_sender, reject_unknown_sender_domain, reject_unknown_reverse_client_hostname, reject_unknown_client_hostname
smtpd_timeout = 30s
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/oh-joy.org/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/oh-joy.org/privkey.pem
smtpd_tls_security_level = may
smtpd_use_tls = yes
strict_rfc821_envelopes = yes
unknown_address_reject_code = 550
unknown_client_reject_code = 550
unknown_hostname_reject_code = 550
unverified_recipient_reject_code = 550
unverified_sender_reject_code = 550
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,   mysql:/etc/postfix/mysql-virtual-email2email.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_transport = lmtp:unix:private/dovecot-lmtp
smtp       inet  n       -       y       -       -       smtpd
submission inet  n       -       y       -       -       smtpd -o   syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o   smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o  smtpd_sasl_path=private/auth -o smtpd_reject_unlisted_recipient=no -o  smtpd_client_restrictions=permit_sasl_authenticated,reject -o  milter_macro_daemon_name=ORIGINATING
smtps      inet  n       -       -       -       -       smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING -o content_filter=spamassassin
pickup     unix  n       -       y       60      1       pickup
cleanup    unix  n       -       y       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       y       1000?   1       tlsmgr
rewrite    unix  -       -       y       -       -       trivial-    rewrite
bounce     unix  -       -       y       -       0       bounce
defer      unix  -       -       y       -       0       bounce
trace      unix  -       -       y       -       0       bounce
verify     unix  -       -       y       -       1       verify
flush      unix  n       -       y       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       y       -       -       smtp
relay      unix  -       -       y       -       -       smtp -o syslog_name=postfix/$service_name
showq      unix  n       -       y       -       -       showq
error      unix  -       -       y       -       -       error
retry      unix  -       -       y       -       -       error
discard    unix  -       -       y       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       y       -       -       lmtp
anvil      unix  -       -       y       -       1       anvil
scache     unix  -       -       y       -       1       scache
maildrop   unix  -       n       n       -       -       pipe  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp       unix  -       n       n       -       -       pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail     unix  -       n       n       -       -       pipe flags=F   user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp      unix  -       n       n       -       -       pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n       n       -       2       pipe flags=R  user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman    unix  -       n       n       -       -       pipe flags=FR   user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
spamassassin unix -      n       n       -       -       pipe user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender}  ${recipient}

答案1

除了compatibility_level=550(这肯定是打字错误)以及您在配置目的地和中继后使用defer_unauth_destination而不是使用之外reject_unauth_destination,我看不出您的配置有什么明显错误。当然,推迟而不是拒绝坏邮件确实会增加您的负载,因为发件人更有可能重试,但确实如此不是解释队列中的意外邮件。

如果本地或经过身份验证的用户继续向您的服务器提交未经授权的邮件,您应该确定该用户是谁,例如通过调用postcat -qe QUEUEID中看到的任何可疑队列 ID postcat -p。如果确实滥用了本地或 sasl 凭据,请重置它们并仔细调查是否发生了其他危害。

如果你展示的只是配置你改变了你的smtpd_*_restrictions,它只是邮件排队从你错误地接受垃圾邮件,清理你的队列:建议迈克尔·汉普顿postsuper -d ALL将删除所有未完成的投递,这可能就是您希望队列中的所有或几乎所有邮件都是垃圾邮件。

附录: Compatibility_level 的合适值是多少?

它是一个安全网 - 设置任意高值实际上会禁用它。您的发行版可能compatibility_level=2为您设置了它,而您想要更改它的唯一原因是因为在升级后您检查了配置,发现/使其为新 Postfix 版本中的新行为做好了准备。您通常只会将其增加到 Postfix 发出的警告中建议的值。阅读/usr/share/doc/postfix/COMPATIBILITY_README(您可以使用 安装 Postfix 文档sudo apt install postfix-doc)以获取有关该功能的更详细说明。

相关内容