В процессе я столкнулся со многими граблями, в том числе и лежавшими здесь до меня. В результате все встало практически на конечном этапе получения почты, и сейчас есть 2 возможных состояния системы, в зависимости от того, в какую часть неба я ткнул до этого пальцем.
Итак, связка exim + dovecot + fetchmail стоит на нашем маршрутизаторе. Здесь же находятся прокси-сервер, nat, и bind в качестве dns сервера. Почта проходит через nat абсолютно прозрачно, никаких правил для 25го порта нет, плюс к этому полное его отключение ничего не изменило, так что проблема не в этом. В bind настроена зона для почтового домена следующим образом:
Код: Выделить всё
$ORIGIN .
$TTL 3600
mailtest.ru. IN SOA mailtest.ru. admin.mailtest.ru. (
2012100804 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS mailtest.ru.
A 10.0.0.21
MX 10 mail.mailtest.ru.
$ORIGIN mailtest.ru.
www CNAME mailtest.ru.
mail A 127.0.1.1
Насчет 127.0.1.1. Я так понимаю, этот адрес (да и вообще все адреса 127.0.0.0 => 127.255.255.255) так же завязан на loopback интерфейс. Но мне, в таком случае, не совсем понятно, почему записи
Код: Выделить всё
mail A 127.0.1.1
Код: Выделить всё
mail A 127.0.0.1
Код: Выделить всё
127.0.0.1 localhost
127.0.1.1 mailtest.ru
#The following lines are desirable for IPv6 capable hosts
... здесь всякая ерунда про IPv6 ...
Код: Выделить всё
set daemon 300
set no syslog
set logfile=/var/log/fetchmail
set no bouncemail
defaults:
antispam -1
batchlimit 100
poll mail.megacorp.ru protocol imap
user spiderman@megacorp.ru
password fetchmail
is admin@mailtest.ru here
mda "/usr/sbin/sendmail -oem -f %F %T"
Здесь вроде все в порядке. Затык происходит, когда Exim получает эту почту от fetchmail. Здесь есть два сценария. Если я указал в зоне для mailtest 127.0.1.1, то exim уходит в петлю и в итоге вываливается с ошибкой "Too many "Received" headers". Часть лога ниже:
Код: Выделить всё
2012-10-08 15:52:38 1TL5KC-0008KJ-Jl <= fetchmail@mailtest.ru U=fetchmail P=local S=2231511 id=507259D0.4000602@megacorp.ru from <fetchmail@mailtest.ru> for admin@mailtest.ru
2012-10-08 15:52:38 1TL5KY-0008KO-2R <= fetchmail@mailtest.ru H=mailtest.ru [127.0.1.1] P=esmtp S=2231676 id=507259D0.4000602@megacorp.ru from <fetchmail@mailtest.ru> for admin@mailtest.ru
2012-10-08 15:52:38 1TL5KC-0008KJ-Jl => admin@mailtest.ru R=dnslookup T=remote_smtp H=mail.mailtest.ru [127.0.1.1] C="250 OK id=1TL5KY-0008KO-2R"
2012-10-08 15:52:38 1TL5KC-0008KJ-Jl Completed
2012-10-08 15:52:38 1TL5KY-0008KR-AW <= fetchmail@mailtest.ru H=mailtest.ru [127.0.1.1] P=esmtp S=2231874 id=507259D0.4000602@megacorp.ru from <fetchmail@mailtest.ru> for admin@mailtest.ru
2012-10-08 15:52:38 1TL5KY-0008KO-2R => admin@mailtest.ru R=dnslookup T=remote_smtp H=mail.mailtest.ru [127.0.1.1] C="250 OK id=1TL5KY-0008KR-AW"
2012-10-08 15:52:38 1TL5KY-0008KO-2R Completed
...
...
2012-10-08 15:52:45 1TL5Kf-0008Lh-0L <= fetchmail@mailtest.ru H=mailtest.ru [127.0.1.1] P=esmtp S=2237022 id=507259D0.4000602@megacorp.ru from <fetchmail@mailtest.ru> for admin@mailtest.ru
2012-10-08 15:52:45 1TL5Kf-0008Lh-0L ** admin@mailtest.ru: Too many "Received" headers - suspected mail loop
2012-10-08 15:52:45 1TL5Ke-0008Le-OS => admin@mailtest.ru R=dnslookup T=remote_smtp H=mail.mailtest.ru [127.0.1.1] C="250 OK id=1TL5Kf-0008Lh-0L"
2012-10-08 15:52:45 1TL5Ke-0008Le-OS Completed
2012-10-08 15:52:45 1TL5Kf-0008Lj-7z <= <> R=1TL5Kf-0008Lh-0L U=Debian-exim P=local S=114143 from <> for fetchmail@mailtest.ru
2012-10-08 15:52:45 1TL5Kf-0008Lh-0L Completed
2012-10-08 15:52:45 1TL5Kf-0008Lm-CJ <= <> H=mailtest.ru [127.0.1.1] P=esmtp S=114304 id=E1TL5Kf-0008Lj-7z@mailtest.ru from <> for fetchmail@mailtest.ru
2012-10-08 15:52:45 1TL5Kf-0008Lj-7z => fetchmail@mailtest.ru R=dnslookup T=remote_smtp H=mail.mailtest.ru [127.0.1.1] C="250 OK id=1TL5Kf-0008Lm-CJ"
2012-10-08 15:52:45 1TL5Kf-0008Lj-7z Completed
...
...
2012-10-08 15:52:49 1TL5Kj-0008N8-8e <= <> H=mailtest.ru [127.0.1.1] P=esmtp S=118812 id=E1TL5Kf-0008Lj-7z@mailtest.ru from <> for fetchmail@mailtest.ru
2012-10-08 15:52:49 1TL5Kj-0008N5-4Z => fetchmail@mailtest.ru R=dnslookup T=remote_smtp H=mail.mailtest.ru [127.0.1.1] C="250 OK id=1TL5Kj-0008N8-8e"
2012-10-08 15:52:49 1TL5Kj-0008N5-4Z Completed
2012-10-08 15:52:49 1TL5Kj-0008NB-DG <= <> H=mailtest.ru [127.0.1.1] P=esmtp S=118973 id=E1TL5Kf-0008Lj-7z@mailtest.ru from <> for fetchmail@mailtest.ru
2012-10-08 15:52:49 1TL5Kj-0008NB-DG ** fetchmail@mailtest.ru: Too many "Received" headers - suspected mail loop
2012-10-08 15:52:49 1TL5Kj-0008NB-DG Frozen (delivery error message)
2012-10-08 15:52:49 1TL5Kj-0008N8-8e => fetchmail@mailtest.ru R=dnslookup T=remote_smtp H=mail.mailtest.ru [127.0.1.1] C="250 OK id=1TL5Kj-0008NB-DG"
2012-10-08 15:52:49 1TL5Kj-0008N8-8e Completed
Если же я указал в зоне для mailtest.ru 127.0.0.1, то все ещё проще (мне этот вариант меньше нравится, btw):
Код: Выделить всё
2012-10-08 16:02:52 1TL5US-0008TZ-0D <= fetchmail@mailtest.ru U=fetchmail P=local S=68847 id=50725E66.7090401@megacorp.ru from <fetchmail@mailtest.ru> for admin@mailtest.ru
2012-10-08 16:02:52 1TL5US-0008TZ-0D == admin@mailtest.ru R=local_domains defer (-17): error in redirect data: domain missing or malformed in "admin@"
Конфиг exim'а: http://pastebin.com/JCLuKFhY
(там ещё много файликов в conf.d, я так понял, конфиг разбит на составляющие. Могу привести содержимое любого из них, если необходимо).
Товарищи, прошу вашей помощи, буду очень благодарен любому совету, подсказке, чему угодно. Выполню любую необходимую последовательность действий, вплоть до битья себя линейкой по рукам.
Заранее спасибо.