AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1132350
Accepted
Vilx-
Vilx-
Asked: 2023-06-01 04:25:13 +0800 CST2023-06-01 04:25:13 +0800 CST 2023-06-01 04:25:13 +0800 CST

Postfix 不会对外发电子邮件进行排队,但所有设置都是默认设置。为什么?

  • 772

我已经用 Postfix、Roundcube 和 Dovecot 设置了一个邮件服务器。一切正常 - 几乎。

在我的国家,有一个名为 inbox.lv 的流行的免费电子邮件服务。他们设置了反垃圾邮件规则,当新服务器尝试向他们发送电子邮件时,他们首先将其列入灰名单 10 分钟,并要求服务器重新发送电子邮件。很公平。

但是,当使用 Postfix 发送外发电子邮件(来自 Roundcube 或 Thunderbird)时,它不会将邮件排队。相反,它会立即返回错误。还有一个日志条目(我为易读性添加的换行符/间距;为保护隐私而编辑的 IP 和电子邮件地址):

May 31 23:17:18 21 postfix/smtpd[24814]: NOQUEUE: reject: RCPT from unknown[MY.IP.ADDRESS.HERE]: 
    450 4.1.1 <[email protected]>: Recipient address rejected: unverified address:
    host mx1.inbox.lv[194.152.32.74] said: 450 4.7.1 <unknown[SERVER.IP.ADDRESS.HERE]>:
    Client host rejected: greylisted, please retry in 597 seconds (in reply to RCPT TO command);
    from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<[192.168.1.216]>

所有队列设置均保留默认值。后缀版本为 2.10.1。

为什么会发生这种情况,如何让 Postfix 对消息进行排队并在 10 分钟后重试?

补充:后缀配置(匿名):

[root@myserver etc]# postconf mail_version
mail_version = 2.10.1

[root@myserver etc]# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_interfaces = all
inet_protocols = all
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
message_size_limit = 100000000
milter_default_action = accept
mydestination = localhost
mydomain = mydomain.lv
myhostname = mydomain.lv
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.10.1/README_FILES
sample_directory = /usr/share/doc/postfix-2.10.1/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_milters = inet:127.0.0.1:8891
smtpd_recipient_restrictions = reject_unverified_recipient
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/letsencrypt/live/mydomain.lv/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mydomain.lv/privkey.pem
smtpd_tls_security_level = may
unknown_local_recipient_reject_code = 550
virtual_mailbox_domains = d1.lv d2.lv d3.lv d4.lv
virtual_mailbox_limit = 0
virtual_transport = lmtp:unix:/var/run/dovecot/lmtp

[root@myserver etc]# postconf -M
smtp       inet  n       -       n       -       -       smtpd
submission inet  n       -       n       -       -       smtpd
smtps      inet  n       -       n       -       -       smtpd
pickup     unix  n       -       n       60      1       pickup
cleanup    unix  n       -       n       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       n       1000?   1       tlsmgr
rewrite    unix  -       -       n       -       -       trivial-rewrite
bounce     unix  -       -       n       -       0       bounce
defer      unix  -       -       n       -       0       bounce
trace      unix  -       -       n       -       0       bounce
verify     unix  -       -       n       -       1       verify
flush      unix  n       -       n       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       n       -       -       smtp
relay      unix  -       -       n       -       -       smtp
showq      unix  n       -       n       -       -       showq
error      unix  -       -       n       -       -       error
retry      unix  -       -       n       -       -       error
discard    unix  -       -       n       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       n       -       -       lmtp
anvil      unix  -       -       n       -       1       anvil
scache     unix  -       -       n       -       1       scache
[root@myserver etc]#
email
  • 1 1 个回答
  • 244 Views

1 个回答

  • Voted
  1. Best Answer
    anx
    2023-06-01T05:00:43+08:002023-06-01T05:00:43+08:00

    您将 postfix 配置为连接到远程目的地以询问他们有关收件人的信息 - 作为您接受任何内容到本地队列之前的必要条件。

    smtpd_recipient_restrictions = reject_unverified_recipient

    在通用邮件服务器上,这不适用于您控制的域或与其运营商有协议的域。

    在不发送邮件的情况下询问远程服务器是否有某些用户将使相当多的服务器停止与您交互。在知道您将发送什么之前,他们无法轻易判断您是试图清洗下一个受害者名单的垃圾邮件发送者还是打算投递邮件的人。

    解决该问题并解决您的原始问题的最简单更改:

    smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination, reject_unverified_recipient

    因为限制是按照指定的顺序处理的,所以这会免除您经过身份验证的用户和不相关的中继请求(无论如何都会被拒绝)。这样您仍然可以强制执行reject_unverified_recipient传入消息(dovecot 可能会立即确认地址)。但是,无需向远程服务器唠叨您一次还没有邮件的收件人。但是,如果您希望为用户之间相互发送消息也启用该功能,则必须比这更复杂。您的 postfix 文档中的 ADDRESS_VERIFICATION_README 文件是..但是旧的,但仍应为您提供一般概述。


    我通常建议使用 master.cf(它带有合适的模板,至少最近是这样)来设置部分分离的 smtpd 实例,一个在端口 25 上用于一般互联网使用,一个端口 465 用于强制认证用户提交。这样您就可以以一种合理可维护的方式在每个服务的基础上实施不同的规则,进一步简化处理中继流量与传入流量不同的任务。

    • 4

相关问题

  • 如何绕过 ISP 的限制性电子邮件政策?

  • SharePoint 传入电子邮件出现“未知别名”错误

  • 电子邮件帐户的角色名称与人名

  • 如何在笔记本电脑上使用 Tobit David?[关闭]

  • 随行人员通过 VPN 连接到 Exchange 2007

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve