Ubuntu 14.01 Host / Ubuntu 14.01 Контейнер; Postfix не отправляет почту; Telnet не подключается к внешнему хосту

==== Основная информация ====

  • Версия iRedMail (проверьте /etc/iredmail-release): iRedMail-0.9.5-1

  • Имя и версия дистрибутива Linux/BSD: контейнер Ubuntu 14.01 внутри Ubuntu 14.01 TurnkeyLinux Core

  • Хранить учетные записи почты, в которой бэкэнд (LDAP/MySQL/PGSQL): MySQL

  • Веб-сервер (Apache или Nginx): Apache

  • Постфиксный отрывок из журнала:

    6 января 10:24:38 постфикс / отправка iredmail / smtpd [2631]: подключение из xyz[127.0.0.1]

    6 января 10:24:38 ifmail postfix/submission/smtpd[2631]: анонимное TLS-соединение установлено из xyz[127.0.0.1]: TLSv1.2 с шифром ECDHE-RSA-AES128-GCM-SHA256 (128/128 бит)

    6 января 10:24:38 постфикс / отправка iredmail / отправка /smtpd[2631]: 6EEA060306: client=xyz[127.0.0.1], sasl_method=LOGIN, sasl_username=address@xyz

    6 января 10:24:38 постфикс / очистка iredmail [2636]: 6EEA060306: message-id=

    6 января 10:24:38 iredmail roundcube: пользователь iaaberga [192.168.121.1]; Сообщение для destination@gmail.com; 250: 2.0.0 Хорошо: поставлено в очередь как 6EEA060306

    6 января 10:24:38 постфикс iredmail /qmgr[2587]: 6EEA060306: from=, размер =575, nrcpt=1 (очередь активна)

    6 января 10:24:38 постфикс / отправка / отправка / smtpd iredmail: отключение от xyz[127.0.0.1]

    6 января 10:24:38 постфикс iredmail /smtpd[2648]: подключение из xyz[127.0.0.1]

    6 января 10:24:38 постфикс iredmail /smtpd[2648]: C97F262D1B: клиент = xyz[127.0.0.1]

    6 января 10:24:38 постфикс / очистка iredmail [2636]: C97F262D1B: message-id=

    6 января 10:24:38 постфикс iredmail /qmgr[2587]: C97F262D1B: from=, размер =1628, nrcpt=1 (очередь активна)

    6 января 10:24:38 постфикс iredmail /smtpd[2648]: отключение от xyz[127.0.0.1]

    6 января 10:24:38 iredmail amavis[1742]: (01742-01) прошло CLEAN {RelayedInternal}, ORIGINATING/MYNETS LOCAL [127.0.0.1]:35413 ->, идентификатор очереди: 6EEA060306, идентификатор сообщения:, mail_id: 4QjhhYZODSHf, Хиты: -2,986, размер: 575, в очереди: C97F262D1B, dkim_new=dkim: YZ, 328 мс, Тесты: [ALL_TRUSTED=-1,RP_MATCHES_RCVD=-3.199,TVD_RCVD_SINGLE=1.2

    6 января 10:24:38 постфикс iredmail /smtp[2642]: 6EEA060306: to=, реле =127.0.0.1[127.0.0.1]:10026, задержка = 0,4, задержки = 0,05 / 0,01 / 0,01 / 0,33, dsn = 2,0.0, статус = отправлено (250 2.0.0 от MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 ОК: поставлено в очередь как C97F262D1B)

    6 января 10:24:38 постфикс iredmail / qmgr [2587]: 6EEA060306: удалено

    6 января 10:24:47 постфикс iredmail /smtp[2618]: подключение к mx6.mail.icloud.com[17.172.34.71]:25: истекло время ожидания соединения

    6 января 10:24:47 постфикс iredmail / smtp [2622]: подключиться к alt1.gmail-smtp-in.l.google.com[173.194.69.27]:25: истекло время ожидания подключения

====

Привет!

Я установил iRedmail как контейнер lxc в системе хост / контейнер Ubuntu 14.01 / Ubuntu 14.01.

В то время как я могу получать электронные письма, Postfix не отправляет сообщения (которые, похоже, отправляются в клиенте веб-почты, но никогда не приходят на dest).

На уровне контейнера подключение работает в целом: я могу подключиться к некоторому хосту, к которому у меня есть доступ; Я могу использовать инструменты apt-get для установки нового программного обеспечения и т. Д.

Попытка telnet alt1.gmail-smtp-in.l.google.com через порт 25 не удалась (если это сделано изнутри контейнера).

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.

Спасибо за любую помощь,

Aldo

1 ответ

Как это часто бывает (когда вы знаете решение), проблема была тривиальной...

Вкратце: неправильная настройка NAT на хосте перехватывает и пересылает трафик из всех источников, КОНТЕЙНЕРЫ ВКЛЮЧЕНЫ!!

Это соответствующая часть правил Iptables HOST'а, как это было:

*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

Очевидно, что без цикла перехвата почтовый сервер внутри контейнера легко отправляет почту!!

Другие вопросы по тегам