当使用 Postfix/Dovecot 组合时,有没有办法告诉 smtp 服务器(Postfix)不要将邮件存储在磁盘上,而是保留/将它们添加到队列中,直到“维护完成”?
对于磁盘升级、卷扩展、chkdisk 等很有用。
我在 CentOS 5 服务器上运行了 SendMail 8.14.4。
日本的一个用户正在发送一条消息,当它被服务器处理时,SendMail 出于某种原因添加了一个额外的回车。
电子邮件包含一个 X 标头,其值(大概)包含国际字符。我说“大概”是因为当我用记事本++检查 MIME 源时,我看到了像STX和 之类的奇怪现象CAN。
我已经能够将测试范围缩小到这个:

如果我通过 Sendmail 发送它,它最终将 SendMail 保留为:
(ips、Q-ID 和主机名已更改以保护无辜者)
现在显然这里有一个潜在的危险信号:标题值以引号开头,但没有结束语。这是 RFC 标准所要求的吗?或者那部分是红鲱鱼?
最终结果是标头值泄漏到消息正文中:

关于为什么 sendmail 添加额外回车的任何想法?
我无法从我的服务器发送电子邮件。但是,我可以接收电子邮件。我设置我的服务器的方式与我多次做过的完全相同,我已经证明它可以工作,它非常简单,包括:创建 DigitalOcean Droplet (Debian 7.0) +通过将 Droplet 重命名为 FQDN 来设置 PTR 记录+ 创建私有名称服务器在我的域注册器中并将我的域指向我的 NameServers + 安装VestaCP (child-ns)。从这里开始,我只需通过 VestaCP 添加一个网络,DNS 记录就会自动添加。
我不确定我的配置哪里出错了,但是我的域收到错误“反向 DNS 不是有效的主机名” izanami.co。我将我的 DigitalOcean Droplet PTR 记录设置为,izanami.co并且我使用 dig 和 host 进行的所有测试似乎都返回了正确的信息。
挖-x 188.166.32.113
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> -x 188.166.32.113
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47119
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;113.32.166.188.in-addr.arpa. IN …Run Code Online (Sandbox Code Playgroud) 我已经安装了一个只发送后缀。当我向完整的电子邮件地址发送邮件时,Postfix 工作。但是,如果将邮件发送给用户,它会添加 FQDN 名称作为扩展名,而不仅仅是我在安装过程中设置的域名。
例如,当我像这样从 ssh 发送邮件时:
echo "This will go into the body of the mail." | mail -s "Hello world" root
Run Code Online (Sandbox Code Playgroud)
我希望邮件转到root@example.com.au. 但是电子邮件发送到root@host.example.com.au.
我已经查看了我的主机设置、邮件名设置、后缀设置,但我不知道为什么它不断向其中添加完整的主机名,而这显然会被退回。这是我的配置文件:
后缀main.cf:
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = …Run Code Online (Sandbox Code Playgroud) 为什么在没有任何 SMTP 服务器的情况下似乎无法从命令行发送邮件?我发现的所有解决方案要么使用 sendmail、postfix 等(据我所知,这些是 SMTP 服务器),要么通过 GMail 或其他一些提供商(需要身份验证)发送。为什么应用程序不能直接连接到目标邮件服务器?例如,如果我想向 user@test.com 发送邮件,为什么应用程序不能直接连接到 test.com 并直接发送邮件而不涉及任何其他服务器?当然,它会被标记为垃圾邮件,但我不在乎。我是否误解了 SMTP 协议,是否只是没有找到合适的应用程序,或者真的没有人费心编写这样的应用程序?
我们有一个设置,其中 postfix 通过 Amazon SES 中继发送邮件。除了电子邮件转发之外,一切正常。
虽然这个话题至少已经在这里和这里讨论过,但仍然有一些问题我无法理解。
问题是 Amazon SES 不会发送From:未经验证的电子邮件。因此,当内部地址想要转发到外部并且发件人也是外部时,邮件将不会被发送。
为了解决这个问题,我们目前在 main.cf 中使用以下配置
header_checks = regexp:/etc/postfix/first_header_checks
smtp_header_checks = regexp:/etc/postfix/second_header_checks
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
sender_canonical_classes = envelope_sender
smtpd_data_restrictions = check_sender_access pcre:/etc/postfix/sender_access
Run Code Online (Sandbox Code Playgroud)
使用first_header_checks
/^From:(\s)?(.*)/i PREPEND X-Original-From: $2
/^To:(\s)?(.*)$/i PREPEND X-Original-To: $2
Run Code Online (Sandbox Code Playgroud)
第二个标头检查
/^From:(.*)/i REPLACE From: <no-reply@verified-domain.com>
Run Code Online (Sandbox Code Playgroud)
发件人_规范
/.*/ user@verified-domain.com
Run Code Online (Sandbox Code Playgroud)
发件人访问权限
/(.*)/ prepend Reply-To: <$1>
Run Code Online (Sandbox Code Playgroud)
这对于收到的邮件非常有效。user@external.com 将邮件发送到 me@verified-domain.com 并转发到 new@another-external.com
Reply-To: <user@external.com>
X-Original-To: <me@verified-domain.com>
To: new@another-external.com
From: <no-reply@verified-domain.com>
X-Original-From: <user@external.com>
Run Code Online (Sandbox Code Playgroud)
问题是,从服务器发出的邮件也会发生这种情况。假设 me@verified-domain.com 发送一封邮件,发件人被重写为无回复,并且将设置回复。我想解决这个问题。邮件标头应该只针对将要转发的传入邮件进行重写。
我尝试过使用像!/^From:(\s)?(.*@verified-domain\.com)/ …
我已将 Postfix 配置为拒绝从没有 PTR 记录的主机和没有 A 记录的主机名发送的电子邮件。我发现有些合法的邮件服务器具有有效的 SPF 记录,但它们的主机名没有 A 记录。结果,合法的电子邮件被拒绝了。
即使主机名没有 A 记录或 IP 地址没有 PTR 记录,有没有办法将 Postfix 配置为接受具有有效 SPF 记录的电子邮件?
我想知道如何在 Google VP 实例上设置像 postfix 这样的邮件服务器。
我正在运行 Ubuntu 16.04(和 LAMP 堆栈),无法让邮件服务器从网站发送电子邮件。
我已经安装了postfix,并打开了端口25,但没有运气。
关于如何进行的任何想法?
错误日志:网络不可达、连接超时
我们有两个交换边缘服务器,我们想更改它们的公共 IP 地址。更改服务器 IP 地址之一(和相关 DNS 记录)已成功完成,电子邮件将发送到除 yahoo 之外的所有目的地,返回:
421 4.7.0 [TSS04] 由于用户投诉,来自 xxxxx(我们的 ip)的消息暂时延迟 - 4.16.55.1;见https://help.yahoo.com/kb/postmaster/SLN3434.html )
另一台服务器可以毫无问题地向雅虎发送电子邮件。我们的服务器和新 IP 地址未列入任何黑名单。我联系了雅虎并向他们提供了有关该问题的信息,但除了他们的一般建议外,他们没有给我们任何解决方案。我在这里发布我们的问题,希望有人以前遇到过这个问题并有解决方案。
编辑:当我们对 IP 和 DNS 配置应用更改并在更改服务器的 IP 过程中将它们恢复几次时,我们决定使用另一个公共 IP 地址来确保它不会因为这些更改而被阻止。一开始在服务器上设置新的 IP 地址没问题,邮件发送成功,但当我们发送 10 封邮件时,它又开始起作用了。该 IP 被阻止了几分钟,然后再次解除阻止。
编辑2:在服务器上设置新的公共IP地址后,我们继续被雅虎阻止了很短的时间。我们的一个客户端自动向雅虎发送突发电子邮件流量,这导致雅虎阻止了大约30分钟。我尝试创建一个脚本来暂停这些电子邮件,并每 3 分钟将其中一封发送给雅虎。到目前为止,我的脚本不再被雅虎阻止。
编辑 3:随着时间的推移,情况似乎越来越好,雅虎不会立即阻止我们,因此我可以将发送电子邮件之间的时间减少到 1 分钟或更短时间而不会被阻止。
我在 VPS 上有一个自托管邮件服务器。通过应用程序发送邮件时,我的大部分邮件都被谷歌拒绝。Google 给出了有关该邮件的以下消息。
Reporting-MTA: dns; mail.myclearmargin.com
X-Postcow-Queue-ID: BAC4E881209
X-Postcow-Sender: rfc822; no-reply@myclearmargin.com
Arrival-Date: Mon, 8 Aug 2022 00:03:09 -0700 (PDT)
Final-Recipient: rfc822; alauddin088@gmail.com
Original-Recipient: rfc822;alauddin088@gmail.com
Action: failed
Status: 5.7.25
Remote-MTA: dns; gmail-smtp-in.l.google.com
Diagnostic-Code: smtp; 550-5.7.25 [2a02:c206:2061:6136::1] The IP address
sending this message does not 550-5.7.25 have a PTR record setup, or the
corresponding forward DNS entry does 550-5.7.25 not point to the sending
IP. As a policy, Gmail does not accept 550-5.7.25 messages from IPs with
missing PTR records. Please …Run Code Online (Sandbox Code Playgroud) email-server ×10
email ×4
postfix ×4
spam ×2
amazon-ses ×1
centos ×1
debian ×1
dovecot ×1
exchange ×1
fqdn ×1
reverse-dns ×1
sendmail ×1
smtp ×1
smtp-headers ×1
spf ×1
ubuntu ×1