成功为我的主域设置 iRedMail 服务器后,我尝试按照此处的步骤将我的辅助域添加为别名:https://docs.iredmail.org/sql.add.alias.domain.html
这还没有起作用,所以我另外将辅助域添加到 /etc/postfix/main.cf 中:
virtual_alias_domains = domain2.tld
virtual_alias_maps = hash:/etc/postfix/virtual
注意:我没有删除 virtual_alias_maps 下的任何现有 mysql 条目。
并将映射输入到 /etc/postfix/virtual 中,然后执行“postmap /etc/postfix/virtual”:
@domain2.tld @domain1.tld
这是在服务器内部进行的。[电子邮件保护]可以发送到[电子邮件保护]用户 2 将在其邮箱中收到邮件。外部电子邮件在发送到以下地址时仍会到达:[电子邮件保护]。
不幸的是,它无法处理发送到辅助域的外部邮件。在我的 /var/logs/mail.log 中,我发现以下几行:
postfix/smtpd[5541]: NOQUEUE: reject: RCPT from mail-oi1-x231.google.com[2607:f8b0:4864:20::231]: 451 4.3.5 <[email protected]>: Recipient address rejected: Server configuration problem; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail-oi1-x231.google.com>
和:
postfix/smtpd[5644]: warning: problem talking to server 127.0.0.1:12340: Connection timed out
Dovecot 正在监听 12340 端口:
dovecot 513 root 67u IPv4 17087 0t0 TCP 127.0.0.1:12340 (LISTEN)
在我的鸽舍日志中我反复发现以下行:
dovecot: quota-status: Error: quota-status: Client sent invalid recipient address: Invalid character in path
在对不同的外部邮件托管商进行进一步测试后,我发现发送到辅助域的 4 封邮件中有 2 封能够到达。GMail 和 Hotmail 没有到达,我公司的 Exchange 和其他一些网络提供商能够到达。
这就是我陷入困境的地方。我怀疑有以下两种情况:要么我只是错过了一个必要的配置,这似乎很有可能,因为我以前从未在 Debian 上设置过邮件服务器,要么 dovecot 错误是由我的辅助域引起的。辅助域包含一个变音符号 (ä/ö/ü),我很清楚这可能会导致一些问题。因此,我还拥有该域的 punycode 格式变体。因此,每当我将带有变音符号的辅助域添加到配置中时,我也会添加它的 punnycode 版本,假设它可以解决这方面的任何问题。
iRedMail/postfix/dovecot/whateverelseisinvolved 似乎可以很好地处理 punnycode/umlauts,这似乎只是取决于发件人,因为只有一半的邮件会丢失(发件人不会收到错误)。有人猜到原因吗?或者我可以检查哪些日志来深入研究这个问题?我是不是只是忘记配置一些显而易见的东西了?
任何朝着正确方向的推动都会受到高度赞赏。
问候,Snot
====基本信息====
- iRedMail版本:1.4.0 MARIADB版
- Linux/BSD 发行版名称和版本:Debian GNU/Linux 10 (buster) - 10.10
- 使用数据库:MySQL(MariaDB)
- Web 服务器:Nginx
====编辑====
至于基础设置;在全新安装 Debian 10 后,我按照本指南中的步骤进行操作https://www.linuxbabe.com/mail-server/debian-10-buster-iredmail-email-server
任何与指南不同的具体配置都已在帖子中提及。我还颁发了一份证书,其中包含主域名和二级域名的 punnycode。
以下是启动时的各种日志:
/var/log/mail.log:
Aug 14 14:24:36 s postfix/postfix-script[1637]: warning: symlink leaves directory: /etc/postfix/./makedefs.out
Aug 14 14:24:37 s amavis[573]: starting. /usr/sbin/amavisd-new at host.domain1.tld amavisd-new-2.11.0 (20160426), Unicode aware, LC_ALL="C", LANG="en_US.UTF-8"
Aug 14 14:24:37 s postfix/postfix-script[1819]: starting the Postfix mail system
Aug 14 14:24:37 s postfix/master[1821]: daemon started -- version 3.4.14, configuration /etc/postfix
Aug 14 14:24:39 s amavis[1915]: Net::Server: Group Not Defined. Defaulting to EGID '121 121'
Aug 14 14:24:39 s amavis[1915]: Net::Server: User Not Defined. Defaulting to EUID '113'
Aug 14 14:24:39 s amavis[1915]: No ext program for .F, tried: unfreeze, freeze -d, melt, fcat
Aug 14 14:24:39 s amavis[1915]: No ext program for .zoo, tried: zoo, unzoo
Aug 14 14:24:39 s amavis[1915]: No decoder for .F
Aug 14 14:24:39 s amavis[1915]: No decoder for .zoo
Aug 14 14:24:39 s amavis[1915]: Using primary internal av scanner code for clamav-socket
Aug 14 14:24:39 s amavis[1915]: Found secondary av scanner clamav-clamscan at /usr/bin/clamscan
/var/log/dovecot/dovecot.log:
Aug 14 14:24:26 s dovecot: master: Dovecot v2.3.4.1 (f79e8e7e4) starting up for pop3, imap, sieve, lmtp (core dumps disabled)
Aug 14 14:24:43 s dovecot: stats: Error: (stats-reader): didn't reply with a valid VERSION line: EXPORT#011global
Aug 14 14:24:43 s dovecot: stats: Error: (stats-reader): didn't reply with a valid VERSION line: EXPORT#011global
grep postfix /var/log/syslog:
Aug 14 14:24:36 s postfix/postfix-script[1637]: warning: symlink leaves directory: /etc/postfix/./makedefs.out
Aug 14 14:24:37 s postfix/postfix-script[1819]: starting the Postfix mail system
Aug 14 14:24:37 s postfix/master[1821]: daemon started -- version 3.4.14, configuration /etc/postfix
我已经在 postfix main.cf 中禁用了配额功能并启用了 SMTPUTF8,除了在启动时在 mail.log 中增加了一行之外,没有明显变化:
Aug 14 14:59:46 s amavis[571]: starting. /usr/sbin/amavisd-new at host.domain1.tld amavisd-new-2.11.0 (20160426), Unicode aware, LC_ALL="C", LANG="en_US.UTF-8"
不幸的是,行为仍然相同。在进一步分析日志后,我意识到似乎来自提供商的邮件是通过 punycode 发送的(即使我专门将其发送到带有变音符/非 ASCII 字符的域)。另一方面,GMail 实际上将邮件发送到包含变音符的域(非 punycode,即使我在收件人邮件地址中专门使用 punycode 格式)。所以,我要么需要教我的服务器处理非 ASCII 字符,要么需要教 Google 通过 punycode 发送。或者教我的服务器将变音符转换为 punycode。选项 2 显然不是真正的选项,所以是 1 或 3。
来自非 GMail 托管邮件的 mail.log 条目:
postfix/amavis/smtp[2300]: 4Gn0zh0z4FzLnSJ: to=<[email protected]>, orig_to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, delay=4, delays=0.1/0/0.01/3.9, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 4Gn0zm04JHzLxc0)
来自 GMail 邮件的 mail.log 条目:
Aug 14 15:06:44 s postfix/smtpd[2281]: warning: problem talking to server 127.0.0.1:12340: Connection timed out
Aug 14 15:06:44 s postfix/smtpd[2281]: NOQUEUE: reject: RCPT from mail-ot1-x32b.google.com[2607:f8b0:4864:20::32b]: 451 4.3.5 <user@dömain2.tld>: Recipient address rejected: Server configuration problem; from=<[email protected]> to=<user@dömain2.tld> proto=ESMTP helo=<mail-ot1-x32b.google.com>
答案1
由于我仍然看不到完整的解决方案(Postfix 中的地址重写可能会起作用,但这将是这个故事的悲伤结局),我正在答案中收集我的诊断步骤:
获得有效的配置,例如通过命令转储
postfix -n
以及postfix -M
邮件服务器是否确保清楚了解不同服务(主要是 amavis)的集成方式。分别测试本地部分、非地址标头和域名中的非 ASCII 字符(以通过 Punycode 编码的 A 标签开头,如
xn--
,以及直接包含非 ASCII 字母的 Unicode 字符)在 Postfix 中保持
SMTPUTF8
禁用状态 - Dovecot 尚未完全支持处理可以通过这种方式接收的邮件,并且它既不是必需的,也不一定有助于解决 amavis 中的问题。amavis 有一个
$log_level
设置(在 Debian 中,大概在 中/etc/amavis/conf.d/
),可能会作为您的一部分归零邮件系统分配。如果你可以选择切换,请将 amavis 作为前队列运行米过滤器(而不是后队列 smtpF过滤器可能会或可能不会揭示更有用的错误或行为。
amavis 修复了一些特定于 mariadb 的 SQL+Unicode 问题在您使用的 2.11 版本之后,数据库日志中可能会出现有用的错误 - 或者可以通过比较配置了功能相同的 postgres 后端的相同堆栈来排除(postgres 不共享 MySQL&MariaDB 的 Unicode 功能/错误)