我的一个 jail 有问题。除了一个 jail(nginx)之外,所有 Jail 都会将 root 的邮件发送给 root。这个 jail 会将邮件发送给[email protected]
。我的 Postfix 配置为接受这些邮件,但我找不到为什么只有这个 jail 会发送到中继的原因。(奇怪的是:如果我从 jail nginx 发送邮件,邮件将使用 DKIM 签名。如果我使用除 nginx 之外的其他 jail 到达我的 Postfix,邮件将不会使用 DKIM 签名。)在 jail 中~./forward
使用nginx 将被忽略。~/.forward
监狱正在将每封邮件发送到外部中继(即使对于不存在的用户!)
在我设置的所有 Jails 中sendmail_enable=NO
,sendmail 均未运行。此外,pkg info
未列出任何第三方邮件程序。
从该监狱进行测试(监狱名称:nginx):
邮件-v 根 主题:测试 测试 。 终止时间 root...通过中继连接到 [127.0.0.1]... 220 mail.domain.tld ESMTP TheTardis >>> EHLO nginx.domain.tld 250-邮件.域名.tld 250-流水线 250-尺寸 52428800 250-VRFY 250-ETRN 250-STARTTLS 250-增强状态代码 250-8BITMIME 250-DSN 250 SMTPUTF8 >>> 启动TLS 220 2.0.0 准备启动 TLS >>> EHLO nginx.domain.tld 250-邮件.域名.tld 250-流水线 250-尺寸 52428800 250-VRFY 250-ETRN 250-增强状态代码 250-8BITMIME 250-DSN 250 SMTPUTF8 >>> 邮件发件人:SIZE=29 250 2.1.0 确定 >>> RCPT 至: >>> 数据 250 2.1.5 确定 354 以 结束数据。 >>>。 250 2.0.0 确定:排队为 52FAC2BDC6E8 root...已发送(确定:排队为 52FAC2BDC6E8) 关闭与 [127.0.0.1] 的连接 >>> 退出 221 2.0.0 再见
从任何其他监狱进行测试:
# 邮件 -v 根 主题:测试 测试 。 终止时间 root...通过中继连接到 [127.0.0.1]... 220 mysql.domain.tld ESMTP Sendmail 8.15.2/8.15.2;2019 年 5 月 7 日星期二 17:05:05 +0200(CEST) >>> EHLO mysql.domain.tld 250-mysql.domain.tld 你好 localhost [127.0.0.1],很高兴认识你 250-增强状态代码 250-流水线 250-8BITMIME 250 尺寸 250-DSN 250-ETRN 250-STARTTLS 250-交付 250 帮助 >>> 启动TLS 220 2.0.0 准备启动 TLS >>> EHLO mysql.domain.tld 250-mysql.domain.tld 你好 localhost [127.0.0.1],很高兴认识你 250-增强状态代码 250-流水线 250-8BITMIME 250 尺寸 250-DSN 250-ETRN 250-交付 250 帮助 >>> 邮件发件人:SIZE=29 250 2.1.0 ... 发送者正常 >>> RCPT 至: >>> 数据 250 2.1.5 ... 收件人正常 354 输入邮件,以“.”结尾,单独占用一行 >>>。 250 2.0.0 x47F55hU031641 消息已接受传送 root...已发送(x47F55hU031641 消息已接受传送) 关闭与 [127.0.0.1] 的连接 >>> 退出 221 2.0.0 mysql.domain.tld 关闭连接
因此,您会看到 jail nginx 正在将其邮件转发到邮件服务器,而其他 jail 则没有。我不知道为什么。我尝试了几种方法来找到转发的原因:
# cat ~/.forward cat: /root/.forward: No such file or directory
# cat ~/.mailrc cat: /root/.mailrc: No such file or directory
# mail -d root
说:user = root, homedir = /root
Sendmail arguments: "send-mail" "-i" "root"
/etc/mail/
.mc
未受影响。时间戳指向监狱建造的时间。此外,除了最初存在的文件freebsd.mc
和之外,没有其他文件freebsd.submit.mc
。因此,也没有特殊指令/etc/mail/aliases
。
将邮件中继到外部邮件服务器的指令必须来自外部,/etc/mail
但我不知道在哪里可以找到更多线索...
有任何想法吗?
编辑1:我昨晚检查了grep -rl 10.23.102.251 /
(邮件服务器 IP) 。每次都运行了大约四个小时,但什么也没发现。grep -rl mail.domain.tld /
edit2: sendmail 由以下机构提供服务:
# cat /etc/mail/mailer.conf #$FreeBSD: releng/11.1/etc/mail/mailer.conf 93858 2002-04-05 04:25:14Z gshapiro $ # # 执行“真正的” sendmail 程序,名为 /usr/libexec/sendmail/sendmail # 发送邮件 /usr/libexec/sendmail/sendmail 发送邮件 /usr/libexec/sendmail/sendmail mailq /usr/libexec/sendmail/sendmail 新别名 /usr/libexec/sendmail/sendmail hoststat /usr/libexec/sendmail/sendmail purgestat /usr/libexec/sendmail/sendmail
答案1
看看/etc/mail/mailer.conf服务于什么效用发送邮件并找出哪个包提供了发送邮件. 在默认安装中,命令
# pkg_which /usr/libexec/sendmail/sendmail
什么也没有显示,需要检查配置发送邮件。这确实没人想要,而常见的做法是用发送邮件和后缀详情请参阅28.4. 更改邮件传输代理. 在这种情况下,/etc/mail/mailer.conf 看起来像
sendmail /usr/local/sbin/sendmail
send-mail /usr/local/sbin/sendmail
mailq /usr/local/sbin/sendmail
newaliases /usr/local/sbin/sendmail
和pkg_which例如会报告
# pkg_which /usr/local/sbin/sendmail
postfix-sasl-3.3.1_1,1
但最好的做法可能是通过中继发送邮件是 mail/ssmtp。在这种情况下,/etc/mail/mailer.conf 看起来像
sendmail /usr/local/sbin/ssmtp
send-mail /usr/local/sbin/ssmtp
mailq /usr/local/sbin/ssmtp
newaliases /usr/local/sbin/ssmtp
hoststat /usr/bin/true
purgestat /usr/bin/true
和pkg_which例如会报告
# pkg_which /usr/local/sbin/ssmtp
ssmtp-2.64_3
您可以尝试重新配置当前的 MTA,但如果您可以更改它,我建议使用邮件/ssmtp或者邮件/postfix如果需要更复杂的配置。