-2

==== 基本信息 ====

  • iRedMail 版本(检查 /etc/iredmail-release):iRedMail-0.9.5-1

  • Linux/BSD 发行版名称和版本:Ubuntu 14.01 容器在 Ubuntu 14.01 TurnkeyLinux Core

  • 将邮件帐户存储在哪个后端(LDAP/MySQL/PGSQL):MySQL

  • Web 服务器(Apache 或 Nginx):Apache

  • 后缀日志摘录:

    1 月 6 日 10:24:38 iredmail postfix/submission/smtpd[2631]:从 xyz[127.0.0.1] 连接

    1 月 6 日 10:24:38 iredmail postfix/submission/smtpd[2631]:从 xyz[127.0.0.1] 建立匿名 TLS 连接:TLSv1.2 与密码 ECDHE-RSA-AES128-GCM-SHA256(128/128 位)

    1 月 6 日 10:24:38 iredmail postfix/submission/smtpd[2631]: 6EEA060306: client=xyz[127.0.0.1], sasl_method=LOGIN, sasl_username=address@xyz

    1 月 6 日 10:24:38 iredmail 后缀/清理 [2636]: 6EEA060306: message-id=

    1 月 6 日 10:24:38 iredmail roundcube:用户 iaaberga [192.168.121.1];给destination@gmail.com的消息;250:2.0.0 正常:排队为 6EEA060306

    1 月 6 日 10:24:38 iredmail postfix/qmgr[2587]: 6EEA060306: from=, size=575, nrcpt=1 (queue active)

    1 月 6 日 10:24:38 iredmail postfix/submission/smtpd[2631]:与 xyz[127.0.0.1] 断开连接

    1 月 6 日 10:24:38 iredmail postfix/smtpd[2648]:从 xyz [127.0.0.1] 连接

    1 月 6 日 10:24:38 iredmail 后缀/smtpd[2648]: C97F262D1B: client=xyz[127.0.0.1]

    1 月 6 日 10:24:38 iredmail 后缀/清理 [2636]: C97F262D1B: message-id=

    1 月 6 日 10:24:38 iredmail postfix/qmgr[2587]: C97F262D1B: from=, size=1628, nrcpt=1 (queue active)

    1 月 6 日 10:24:38 iredmail postfix/smtpd[2648]:与 xyz [127.0.0.1] 断开连接

    1 月 6 日 10:24:38 iredmail amavis[1742]: (01742-01) 通过 CLEAN {RelayedInternal}, ORIGINATING/MYNETS LOCAL [127.0.0.1]:35413 -> , Queue-ID: 6EEA060306, Message-ID: , mail_id :4QjhhYZODSHf,点击次数:-2.986,大小:575,queued_as:C97F262D1B,dkim_new=dkim:yz,328 毫秒,测试:[ALL_TRUSTED=-1,RP_MATCHES_RCVD=-3.199,TVD_RCVD_SINGLE=1.213]

    1 月 6 日 10:24:38 iredmail postfix/smtp[2642]: 6EEA060306: to=, relay=127.0.0.1[127.0.0.1]:10026, delay=0.4, delays=0.05/0.01/0.01/0.33, 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 C97F262D1B)

    1 月 6 日 10:24:38 iredmail 后缀/qmgr [2587]:6EEA060306:已删除

    1 月 6 日 10:24:47 iredmail postfix/smtp[2618]:连接到 mx6.mail.icloud.com[17.172.34.71]:25:连接超时

    1 月 6 日 10:24:47 iredmail postfix/smtp[2622]:连接到 alt1.gmail-smtp-in.l.google.com[173.194.69.27]:25:连接超时

====

你好!

我确实在 Ubuntu 14.01 / Ubuntu 14.01 主机/容器系统上安装了 iRedmail 作为 lxc 容器。

虽然我可以接收电子邮件,但 Postfix 不发送消息(这些消息似乎是在 webmail 客户端中发送的,但永远不会到达目的地)。

从容器级别的连接似乎通常可以工作:我可以通过 ssh 连接到我可以访问的某个主机;我可以使用 apt-get 工具安装新的软件等。

尝试在端口 25 上远程登录 alt1.gmail-smtp-in.l.google.com 不会成功(如果从容器内部完成)。

root@iredmail ~# telnet alt1.gmail-smtp-in.l.google.com 25
Trying 173.194.69.26...

最终连接会失败。

如果我确实从容器中退出并尝试相同的 telnet 连接,一切都很好

root@lxc ~# telnet alt1.gmail-smtp-in.l.google.com 25
Trying 173.194.69.27...
Connected to alt1.gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP t19si1302495wrb.232 - gsmtp
QUIT
221 2.0.0 closing connection t19si1302495wrb.232 - gsmtp
Connection closed by foreign host.

这是容器的 iptables 配置:

*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:FORWARD ACCEPT [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 12320 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 12321 -j ACCEPT

# Mail SMTP
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A FORWARD -p tcp -d 192.168.121.1 --dport 25 -j ACCEPT

# POP3
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT

# SMTPS
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
# IMAPS
-A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
# IMAPS - 2
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT

COMMIT

我不熟悉容器的网络,所以我很可能会错过任何明显的东西!

它看起来不是Postfix 配置的问题..

谢谢你的帮助,

阿尔多

4

1 回答 1

0

正如它经常发生的那样(一旦你知道解决方案),问题是微不足道的......

简而言之:主机中的错误 NAT 设置正在拦截和转发来自所有来源的流量,包括容器!

这是主机的 iptables 规则的相关部分,因为它是:

*nat
:PREROUTING ACCEPT [22532:1479233]
:INPUT ACCEPT [22432:1472721]
:OUTPUT ACCEPT [11623:812922]
:POSTROUTING ACCEPT [2959:155572]
-A PREROUTING -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.121.174:25
-A PREROUTING -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.121.174:110
-A PREROUTING -p tcp -m tcp --dport 143 -j DNAT --to-destination 192.168.121.174:143
-A PREROUTING -p tcp -m tcp --dport 465 -j DNAT --to-destination 192.168.121.174:465
-A PREROUTING -p tcp -m tcp --dport 587 -j DNAT --to-destination 192.168.121.174:587
-A PREROUTING -p tcp -m tcp --dport 993 -j DNAT --to-destination 192.168.121.174:993
-A PREROUTING -p tcp -m tcp --dport 995 -j DNAT --to-destination 192.168.121.174:995
-A POSTROUTING -o br0 -j MASQUERADE
-A POSTROUTING -s 192.168.121.0/24 ! -o natbr0 -j MASQUERADE
COMMIT

它告诉 iptables 将所有到端口 25 的流量传递到邮件服务器容器的虚拟地址。即使来自容器本身的流量也会发生这种情况。

答对了!!

现在这是正确的设置,其中 br0 是链接到外部世界的 AWS 网络接口。因此,只有首先到达那里的数据包应该被路由到电子邮件服务器数据包的 NAT 虚拟地址。

*nat
:PREROUTING ACCEPT [22532:1479233]
:INPUT ACCEPT [22432:1472721]
:OUTPUT ACCEPT [11623:812922]
:POSTROUTING ACCEPT [2959:155572]
-A PREROUTING -p tcp -m tcp --in-interface br0 --dport 25 -j DNAT --to-destination 192.168.121.174:25
-A PREROUTING -p tcp -m tcp --in-interface br0 --dport 110 -j DNAT --to-destination 192.168.121.174:110
-A PREROUTING -p tcp -m tcp --in-interface br0 --dport 143 -j DNAT --to-destination 192.168.121.174:143
-A PREROUTING -p tcp -m tcp --in-interface br0 --dport 465 -j DNAT --to-destination 192.168.121.174:465
-A PREROUTING -p tcp -m tcp --in-interface br0 --dport 587 -j DNAT --to-destination 192.168.121.174:587
-A PREROUTING -p tcp -m tcp --in-interface br0 --dport 993 -j DNAT --to-destination 192.168.121.174:993
-A PREROUTING -p tcp -m tcp --in-interface br0 --dport 995 -j DNAT --to-destination 192.168.121.174:995
-A POSTROUTING -o br0 -j MASQUERADE
-A POSTROUTING -s 192.168.121.0/24 ! -o natbr0 -j MASQUERADE
COMMIT

显然,如果没有拦截循环,容器内的电子邮件服务器很容易将邮件发送出去!!

于 2017-01-07T14:05:09.583 回答