LINUX.ORG.RU

Exim MTA настройка пересылки почты.

 


0

1

Добрый день! Подскажите, пожалуйста, как настроить Exim в качестве релея для пересылки писем определенному домену, то есть, его единственной ролью должно быть принять всю почту для данного домена, проверить на спам и отправить дальше - на другой сервак с зимброй. Даны два сервака, на одном exim на debian, на втором zimbra на centos, между ними виртуальная сеть. сервер с Eximом выставлен в интернет белым ip.

Ну, по идее, нужно прописать домен в relay_to_domains и убрать его из local_domains. Потом нужно будет прописать в routers что-то типа:

zimbra_router:
driver = manualroute
domains = +relay_to_domains
transport = remote_smtp
route_list = * 1.2.3.4   #ip-адрес сервера с zimbra
no_more

Но это первая часть задания. А вот «проверить на спам» — это творчество, там лучше понимать, что делает та или иная проверка в конфиге.

Отмечу, что при такой схеме, по хорошему, exim должен каким-то образом знать список почтовых ящиков zimbra, иначе будут возникать backscatter письма.

mky ★★★★★ ()

у меня сделано так:

/etc/exim/exim.conf
domainlist relay_to_domains = dbm;/etc/exim/relayto.dbm
smarthost:
  driver = manualroute
  domains = +relay_to_domains
  transport = remote_smtp
  route_data = ${lookup{$domain}dbm{/etc/exim/relayto.dbm}}
файл /etc/exim/relayto.dbm создаётся посредством exim_dbmbuild из текстового файла с содержимым типа:
*.domain1.tld: 10.1.1.1
domain1.tld:   10.1.1.1
*.domain2.tld: 10.1.1.2
domain2.tld:   10.1.1.2
спам отсеивается только при несоответствии A и PTR записей, мне пока что норм

а на самом деле лучше почитать документацию к exim'у и комменты в конфиге, т. к. в настройке электропочты надо разобраться самостоятельно и понять что к чему

xfilx ★★ ()
Ответ на: комментарий от mky

спасибо, хоть что-то прояснилось, я в этом всем просто не очень. Однако, update-exim4.conf.conf. я привела к виду

dc_eximconfig_configuretype='internet'
dc_other_hostnames='exim.mydomain.local'
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhosts=''
dc_relay_domains='test.destinationdomain.ru' #домен, куда
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'

далее в общем-то стало понятно, что в /etc/exim4/conf.d/router есть разные роутеры. прошу прощения за вероятно глупый вопрос, но куда его там поместить?

Technoblondinka ()
Ответ на: комментарий от mky

Отмечу, что при такой схеме, по хорошему, exim должен каким-то образом знать список почтовых ящиков zimbra, иначе будут возникать backscatter письма.

Для этого можно использовать recipient callout

MumiyTroll ★★ ()
Ответ на: комментарий от Technoblondinka

Я не знаю нюансов настройки exim в вашей системе, если это дебиан, то там может быть конфиг одним файлом или кучей. Но сути не меняет, одни файлы инклюдятся в другие, в итоге всё одно как бы получается один конфиг. Маршруты начинаются с ″begin routers″ и проверяются все по порядку, пока ″domain =″ не совпадёт доменом адресата письма.

Маршут к zimbra нужно поближе к началу, чтобы он был до маршрута типа ″dnslookup″, или исключать ″+relay_domains″ из опции ″domains″ у других маршрутов. Можно вобще в самое начало, если вам не нужны никакие редиректы/алиасы для relay_domains, а только передача этой почты зимбре без обработки.

mky ★★★★★ ()
Ответ на: комментарий от mky

Да, это дебиан, они там разбиты на отдельные файлики. Я его поместила, пока, после файла заголовка с этим «begin routers» в теле. Ну как без обработки, антиспам/антивирус еще как-то нужно на этом деле настроить. Я думаю поставить ClamAv и настроить разные правила с рангами сообщения, в этом случае ведь нужно будет еще роутеры писать, или они уже тут нипричем? В общем-то пока основной вопрос в том, как протестировать доставку письма в зимбру? Если я правильно понимаю, придется попросить хостера добавить mx-запись на виртуалку с экзимом, и письма туда дублировать. Вероятно, от какого-то одного получателя, чтобы меня ими не завалило, или есть иной способ это все проверить?

Technoblondinka ()
Ответ на: комментарий от Technoblondinka

mx-запись нужна для реальных серверов. Для начального тестирования письмо можно отправлять telnet'ом или с какого-то отдельного сервера (MTA), у которого прописан транспорт (маршрут) к вашему exim'у.

И в iptables на сервере с exim'ом на время тестирования лучше разрешить 25 порт только для определённых ip-адресов, чтобы в логах не было лишних записей от спамеров.

mky ★★★★★ ()
Ответ на: комментарий от Technoblondinka

netstat --all | grep exim4

И не выведет. По умолчанию netstat не выводит имена процессов, нужен ключ ″-p″. И не факт, что процесс будет называться именно exim4, лучше грепать по порту:

netstat --all -p  | grep ':smtp '
или
netstat --all -p -n  | grep ':25 '

Ну, а там по обстоятельствам, смотреть, есть ли exim в списке процессов, если нет, значит ему что-то не нравится и он не запускается, тогда смотреть логи. Если есть и порт слушает, смотреть, открыт ли порт в iptables.

mky ★★★★★ ()
Ответ на: комментарий от mky

Доброго времени! Хотелось бы понять, что я на этот раз упускаю. При попытке отправить письмо по настроенной выше схеме с почтового ящика в gmail в netstat -all -p -n | grep ':25' получается tcp 0 0 ip_моего_хоста:25 209.85.233.177:53120 ESTABLISHED - такие же записи добавляются при каждой попытке отправить письмо, но в виртуалку с зимброй оно видимо не приходит. в route_list = * 1.2.3.4 - вписала ip зимбры, внутренний. При перезапуске экзима panic лог не пустой, ругается на то что не удается ему соединиться с внутренним этим ip по 25 порту. интерфейс для этой сети настроен на обеих машинах и работает - они друг друга видят.

Technoblondinka ()
Ответ на: комментарий от mky

А вот в этом dc_local_interfaces параметре только ip данного хоста должны быть? я туда вписала внутренний ip хоста с зимброй.. если убрать то соединение Established при отправке письма не возникает. Но на этот ip паник лог и ругается.

Technoblondinka ()
Ответ на: комментарий от Technoblondinka

интерфейс для этой сети настроен на обеих машинах и работает - они друг друга видят.

Проверяли telnet'ом на 25 порт на ip-адрес зимбры из системы с exim'ом?

я туда вписала внутренний ip хоста с зимброй..

Если dc_local_interfaces пустой, тогда exim принимает соединения на всех интерфейсах, если с адресом, то только на этом адресе. Но этот адрес должен пренадлежать системе, где запущен exim, а не другому компу. Почему некорректное значение этого параметра как-то влияет на поведение мне не понятно.

Возможно, что вы просто не успеваете заметить это соединение, при современных скоростях установление соединения и передача письма занимают доли секунды. Разумеется, если exim выполняет anti-spam проверки, обращается к DNS, то соединение может сущетсвовать дольше. Возможно, вы замечаете ESTABLISHED-соедиение в те разы, когда идёт поиск PTR-записи для этого 209.85.233.177, а в другие передачи поиск не идёт и ответ берётся из кеша DNS-сервера.

mky ★★★★★ ()
Ответ на: комментарий от mky

По telnet 25 - м портом связь есть, ip поправила на ip хоста с экзимом. письмо все равно получить не могу. Приведу полностью свои настройки: /etc/exim4/update-exim4.conf.conf

dc_eximconfig_configtype='internet'
dc_other_hostnames='name.domain.local' #имя хоста с зимброй
dc_local_interfaces='127.0.0.1 ; external_exim_ip ; internal_exim_ip'
dc_readhost=''
dc_relay_domains='zimbradomainname' #соответственно
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost=''
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname=''
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
и добавила новый транспорт сюда /etc/exim4/conf.d/router - это директория с роутерами, после роутера с названием head добавила сразу еще один под названием zimbra-router, в который вписала как выше рекомендовали:
driver = manualroute
domains = +relay_to_domains
transport = remote_smtp
route_list = * 1.2.3.4   #ip-адрес сервера с zimbra
no_more

Technoblondinka ()
Ответ на: комментарий от Technoblondinka

Не вижу, где задаётся значение ″relay_to_domains″?

Что exim пишет в логи, не в panic, а в mainlog и rejectlog? Если вы отправляете на exim письма с gmail, то должны быть какие-то записи про это.

mky ★★★★★ ()
Ответ на: комментарий от mky

Прошу прощения, а dc_relay_domains не оно самое? Как раз хотела спросить про логи (пыталась написать со своей почты в gmail-e) mainlog

H=mail-ig0-f176.google.com [209.85.213.176] F=<мой гугл-ящик> temporarily rejected RCPT <mail@test.mydomain.ru>: lowest numbered MX record points to local host

lowest numbered MX record points to local host: test.mydomain.ru (while verifying <mail@test.mydomain.ru> from host mail-ig0-f169.goog$ //гугл, в общем

rejectlog

H=mail-ig0-f169.google.com [209.85.213.169] F=<мой гугл-ящик>  temporarily rejected RCPT <mail@test.mydomain.ru>: lowest numbered MX record points to local host
Technoblondinka ()
Ответ на: комментарий от Technoblondinka

Эта ошибка возникает, потому что exim не получил маршрут (route_list) до сервера с zimbra и пытается релеить почту на основании MX-записей.

У вас стоит dc_use_split_config='false' (я этот сразу не заметил). В этом случае, как я понял из описания команды ″update-exim4.conf″, подкаталоги типа /etc/exim4/conf.d/router не обрабатываются.

Посмотрите файл ″/var/lib/exim4/config.autogenerated″, есть ли там ″relay_to_domains″ и ″route_list″ ? А может нужно смотреть ″/etc/exim4/exim4.conf″, я плохо знаю особенности дебиана.

Ну, ещё как вариант, вместо ручного прописывания маршрута можно попробовать создать файл ″/etc/exim4/hubbed_hosts″ и прописать там в одну строчку почтовый домен и ip-адрес зимбры, разделив их двоеточием:

zimbradomainname: 1.2.3.4
и обновить конфиг.

Ещё есть команда ″exim -bt″, с помощью которой можно проверять обработку exim'ом адреса, чтобы не отправлять письмо с gmail. То есть вводите ″exim -bt mail@test.mydomain.ru″ и смотрите, будет exim ругаться про ″lowest numbered MX record″.

mky ★★★★★ ()
Ответ на: комментарий от mky

Заработало! =) создан файлик /etc/exim4/hubbed_hosts в нем прописано

 zimbradomainname : 1.2.3.4 
так же в конфиге, который /etc/exim4/exim4.conf.template в секции с роутерами вверху в hubbed_hosts есть опция route_data , в нее было вписано следующее:
route_data = ${lookup{$domain}lsearch{/etc/exim4/hubbed_hosts}}
может, кому пригодится. так же, полезная ссылка: http://doc.dvgu.ru/admin/exim/FAQ_3.html Большое спасибо за подробную консультацию!

Technoblondinka ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.