FreeBSD 与 Jails:在 Jail 中通过 Postfix 发送邮件

FreeBSD 与 Jails:在 Jail 中通过 Postfix 发送邮件

我有 FreeBSD 10.2,并且正在使用几个 Jails,其中一个安装了 Postfix。

我希望我的其他 jail 和主机系统使用 Jail 中的本地 Postfix 安装。它们应该使用 sendmail 将邮件提交到 Postfix Jail。

在其他监狱和主机中正确的设置是什么?

我已经可以从 Postfix jail 和主机内部发送邮件。

在主机中我已经设置/etc/mail/mailertable

xxx.yy  smtp:mail.xxx.yy
*.xxx.yy    smtp:mail.xxx.yy

我在主机中也有一个/etc/mail/sendmail.mc(我不确定我是否真的需要它以及它是否正确):

include(`/usr/share/sendmail/cf/m4/cf.m4')dnl
OSTYPE(freebsd6)dnl
DOMAIN(generic)dnl
FEATURE(access_db, `hash -o -T<TMPF> /etc/mail/access')dnl
FEATURE(blacklist_recipients)dnl
FEATURE(local_lmtp)dnl
FEATURE(mailertable, `hash -o /etc/mail/mailertable')dnl
FEATURE(virtusertable, `hash -o /etc/mail/virtusertable')dnl
define(`SMART_HOST', `[10.0.0.3]')dnl
define(`MAIL_HUB', `[10.0.0.3]')dnl
MASQUERADE_AS(`xxx.yy')dnl
FEATURE(`masquerade_envelope')dnl
GENERICS_DOMAIN(host.xxx.yy HOST)dnl
FEATURE(genericstable)dnl
define(`confCW_FILE', `-o /etc/mail/local-host-names')dnl
DAEMON_OPTIONS(`Name=IPv4, Family=inet')dnl
define(`confBIND_OPTS', `WorkAroundBrokenAAAA')dnl
define(`confNO_RCPT_ACTION', `add-to-undisclosed')dnl
define(`confPRIVACY_FLAGS', `authwarnings,noexpn,novrfy')dnl
define(`confDONT_PROBE_INTERFACES',`True')dnl
define(`confDEF_CHAR_SET',`ISO-8859-1')dnl
MAILER(local)dnl
MAILER(smtp)dml

sendmail_enable="NO"在我所设的监狱里rc.conf

然而,当我尝试从监狱发送电子邮件时,我收到:

Jan  5 12:54:52 push sendmail[83676]: u05BsqB6083676: from=root, size=55, class=0, nrcpts=1, msgid=<[email protected]>, relay=root@localhost
Jan  5 12:54:52 push sm-mta[83677]: STARTTLS=server, relay=push [10.0.0.12], version=TLSv1/SSLv3, verify=NO, cipher=DHE-RSA-AES256-GCM-SHA384, bits=256/256
Jan  5 12:54:52 push sendmail[83676]: STARTTLS=client, relay=[127.0.0.1], version=TLSv1/SSLv3, verify=FAIL, cipher=DHE-RSA-AES256-GCM-SHA384, bits=256/256
Jan  5 12:54:52 push sm-mta[83677]: u05Bsq42083677: from=<[email protected]>, size=404, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=Daemon0, relay=push [10.0.0.12]
Jan  5 12:54:52 push sendmail[83676]: u05BsqB6083676: [email protected], ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30055, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (u05Bsq42083677 Message accepted for delivery)
Jan  5 12:54:52 push sm-mta[83679]: u05Bsq42083677: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:00, xdelay=00:00:00, mailer=esmtp, pri=30404, relay=mail.xxx.yy. [XX.XX.XX.XX], dsn=4.0.0, stat=Deferred: Connection refused by mail.xxx.yy.

在 Postfix 监狱中我没有收到有关此事的任何日志。

答案1

修复您的 Postfix jail。没有日志本身就是一个错误。

另外,您的日志显示Connection refused by mail.xxx.yy——因此您的中继设置似乎正在运行,但您无法连接到 Postfix。也许它没有绑定到正确的 IP?

答案2

在您的 postfix jail 中,使用 sockstat 来验证 postfix 是否在您期望的位置进行监听:

[root@postfix /]# sockstat | grep :25
root     master     1947  13 tcp4   172.16.15.58:25       *:*

在这种情况下,您可以看到此 jail 中的 postfix 正在监听 IP 地址 172.16.15.58、端口 25。现在您只需要配置主机和其他 jail 以将其消息转发到 postfix。

Sendmail 对于此类任务来说有点过分,请使用 Sendmail ssmtp。配置非常简单:

# cat /usr/local/etc/ssmtp/ssmtp.conf | grep -v ^#
[email protected]
mailhub=172.16.15.58

然后完全禁用 sendmail:

sysrc sendmail_enable=NONE

相关内容