FreeBSD:系统正在将任何用户的邮件发送到外部 smtp - 为什么?

FreeBSD:系统正在将任何用户的邮件发送到外部 smtp - 为什么?

我的一个 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如果需要更复杂的配置。

相关内容