Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» FAQ по Exim MTA #2

Автор: Munster
Дата сообщения: 21.02.2012 10:52
проблема - запустил на строил exim. Письма не уходят - следующая проблема

с гуглом:
2012-02-21 12:35:58 1RzkzR-000G0o-IR SMTP error from remote mail server after MAIL FROM:<help@*****.ru> SIZE=4219: host ASPMX.L.GOOGLE.com [173.194.69.26]: 454-4.5.0 SMTP protocol violation, no commands allowed to pipeline after\n454 4.5.0 STARTTLS, see RFC 3207 uf2si13034038bkb.79


с mail
220 mailserver.*****.ru ESMTP Sendmail 8.14.3/8.14.3; Tue, 21 Feb 2012 12:48:57
+0300
helo localhost250 mailserver.******.ru Hello programmer[192.168.100.74]
mail from: help@******.ru250 OK
rcpt to: *****@mail.ru250 Accepted
data
354 Enter message, ending with "." on a line by itself
lalala
.
250 OK id=1RzmLl-000GHy-Rs
Автор: Alukardd
Дата сообщения: 25.02.2012 12:39
Здравствуйте.
Вопрос больше не конкретно по Exim, а вообще по почтовым серверам...

Есть необходимость сделать повысить отказоустойчивость сервера. В голове мелькают 3 мысли:
тупо вторая машина с зеркалированием базы пользователей(тут средствами СУБД) и Maildir(тут можно хоть DRBD применять). Машины связать в HA кластер (подмена IP, синхронизация активных соединений и всё такое)
создание 2 MX записей на NS и соответственно тот, что второй (с меньшим приоритетом) делать релеем для основного и пересылать почту на него с огромным времнем жизни и достаточно частыми попытками переслать письмо.
создание 2 MX записей на NS (можно даже с одинаковым весом). И при этом организовать полную синхронизацию между серверами (аналогично 1-о мысли, только без кластера).

Подскажите что лучше и если можно ссылочки на примеры или интересные техники. Если Exim имеет свои механизмы(или есть приёмы его конфигурирования) для синхронизации почты и учёток со вторым сервером, то хотелось бы узнать о таких возможностях. В качестве почтового сервера используется Dovecot, но мне кажется это абсолютно не важно. С доступностью веб-морды я как-нибудь уж разберусь (DNS --> 2 nginx --> 2 web-морды).
Автор: vlary
Дата сообщения: 25.02.2012 14:44
Alukardd Что именно подразумевается под почтовым сервером? Собственно SMTP MTA? IMAP/POP3? Сервер базы данных? Или все в куче?
И что хочется добиться от резервирования? 1. Чтобы не терялись письма снаружи? 2. Чтобы она быстро приходила и отправлялась? 3. Чтобы юзер всегда мог отправить почту изнутри? 4. Чтобы он всегда имел доступ к своему ящику и почтовым архивам? 5. Все сразу?
В первом варианте вообще делать ничего не надо, если сервер меньше 3 дней в дауне, почта сохранится на серверах отправителей и придет потом.
Во втором случае нужно иметь двух провайдеров и два фронт-энда.
Ну а дальше - это уже действительно нужна кластеризация почтовой инфраструктуры. Как это реализуется, например, в Коммунигейте, можно почитать здесь: Ссылка




Добавлено:
Munster Так ты для гугла тоже весь лог сессии выложи, а то привел только одну строчку.
Автор: Alukardd
Дата сообщения: 25.02.2012 22:22
vlary
Под "почтовым сервером" я имел ввиду всё вместе(не знаю как это по другому назвать).
Ссылка не очень познавательна...
Интересует вариант №5 - доступность всего и сразу.

Вариант клстеризации не всегда я так понимаю подходит. Например, сейчас у меня стоит вопрос о размещении резервного сервера в другом офисе, и что-то я не очень знаю как так будет работать кластер через инет(вообще такое применяется? через VPN что ли?)

Если честно, то меня больше всего интересует схема описанная мной в 3 пункте. Можно ли прямо так все и сделать? Тупо наладив нелепую синхронизацию и указав 2 MX записи(2-ую всё-таки менее приоритетной сделать)...
Всё это интересует, в данном случае, в разрезе конкретных служб - Exim+Dovecot.
Автор: vlary
Дата сообщения: 26.02.2012 13:45
Alukardd
Цитата:
Всё это интересует, в данном случае, в разрезе конкретных служб - Exim+Dovecot.
Ну, поставить 2 Эксима - не проблема. А вот как задублировать Dovecot - это уже интересно.
В свое время, когда была жива компания SCO, она предлагала аж 2 вида кластеров: Reliant HA и Nonstop Cluster. Вот там все было сделано по-взрослому: двухканальный рэйд, два или больше физических сервера, общий айпи. В случае падения одного сервера все прекрасно работало на оставшемся. Думаю, на линуксе тоже есть нечто подобное.
Однако стоит ли игра свечек? Золотое правило - затраты на предотвращение возможного ущерба не должны превышать убытков от этого ущерба.

Автор: shadowmaster63
Дата сообщения: 20.03.2012 15:01
2012-03-20 14:30:08 H=(Armagedon) [2X.9X.X6.6X] F=<test@mydomain.ru> rejected RCPT <test_milbox2011@mail.ru>: "Homo hominus lupus est"

Скажите пожалуйста почему mail и яндекс реджектит мои мессаги ?
Автор: Alukardd
Дата сообщения: 20.03.2012 15:49
shadowmaster63
Одна из возможных причин - отсутствие зоны обратного просмотра для вашего ip адреса.
Другая причина - это отсутствие SPF записи в вашей доменной зоне.
Автор: vlary
Дата сообщения: 20.03.2012 16:46
shadowmaster63 И это тоже: H=(Armagedon). Приличные сервера так не здороваются, нужно предъявлять FQDN.
Автор: Alukardd
Дата сообщения: 20.03.2012 17:03
vlary
Да вроде как за приветствие не реджектят, точнее его требуют но содержание вроде как не особо вдаются... Надо будет уточнить это дело в своих ACL'ях.

p.s. заглянул в свой reject.log и парочку его ротаций - отправил еще одного Китайского провайдера в бан iptables'ом, за один лишь засветившийся ip...

Добавлено:
OMG, а вроде как без этой записи меня когда-то реджектили... Обнаружил у себя что TXT запись описана не верно, и не возвращалась по соответствующему запросу. Я забыл указать имя поддомена для которого она была записана (было просто IN TXT, даже @ не была вначале указана - ппц, чего только не обнаружишь).
Автор: shadowmaster63
Дата сообщения: 20.03.2012 20:09
Подскажите на счет FQDN как это исправить ?
На счет обратной зоны завтра попробую исправить.
TXT запись прописана
@    TXT    v=spf1 ip4:serverIP a mx -all
Автор: Alukardd
Дата сообщения: 20.03.2012 20:12
shadowmaster63
Возможно я не прав, но вроде как exim здоровается строчкой из /etc/hostname.

Если зоны обратного просмотра нету, то я вам 99% даю, что это из-за неё вас reject'ят.
Автор: vlary
Дата сообщения: 20.03.2012 21:11
Alukardd
Цитата:
Возможно я не прав, но вроде как exim здоровается строчкой из /etc/hostname
Увы, не прав. Exim стоит на разных системах, и не везде есть /etc/hostname
Если нужно задать конкретно, в конфиге используется параметр primary_hostname = host.domain.tld

Цитата:
# Specify your host's canonical name here. This should normally be the fully
# qualified "official" name of your host. If this option is not set, the
# uname() function is called to obtain the name. In many cases this does
# the right thing and you need not set anything explicitly.
Автор: Alukardd
Дата сообщения: 20.03.2012 21:28
vlary
Ух, нашёл в своих дебрях этот параметр. Упс, у меня в этой переменной был домен 3-го уровня, а почта у меня реально на 2-го... Офигеть 2 косяка нашёл пока с вами обсчался... А еще я обнаружил по следам файл /etc/mailname, отя в нём у меня верно всё было... Наверное просто удалённые хосты не парятся особо чем с ним здороваются, или ни чего не произошло т.к. у меня ip один.
Автор: shadowmaster63
Дата сообщения: 21.03.2012 06:45
primary_hostname у меня тоже был домен третьего уровня. Исправил на первого теперь в реджект логах нету фразы человек человеку волк а письма так и не уходят
Причем если я делаю echo "test" | exim -v "test@yandex.ru" оно успешно уходит и доходит до почтового ящика
С зоной позже посмотрю...
Автор: shadowmaster63
Дата сообщения: 21.03.2012 23:44
Delay 5s for [2x.9x.6x.6x] with HELO=Armagedon. Mail from tech@mydomain.ru to test_mailbox2011@yandex.ru.

Как мне подсказал один умный человечек это все из за того что мой экзим не правильно здоровается с серверами но строчку helo_data исправить не удалось подскажите как быть


Вернее даже не так.
при локальной отправке он подставляет все правильно, то что я прописываюв helo_data, но если я подключаюсь к серверу через клиент то екзим при отправке подставляет туда строку [2x.9x.6x.6x] with HELO=Armagedon что ни есть хорошо...

как исправить.
Автор: vlary
Дата сообщения: 22.03.2012 01:36
shadowmaster63 Из твоего сбивчивого объяснения ничего не понял! Что не получается?
По умолчанию в EHLO, HELO Exim использует primary_hostname, либо берет из uname() , если переменная не определена.
С помощью helo_data можно заменить EHLO, HELO в конкретном smtp транспорте.
Скажем, у тебя два интерфейса от разных провайдеров, и ты хочешь письма в определенные домены пускать через другого провайдера. Там у тебя другое имя хоста, скажем, mail2.domain.com.
Указываешь в роуткре другой транспорт , и в транспорте пишешь:

Код: prov2_smtp:
driver = smtp
interface = 2.2.2.2
helo_data = mail2.domain.com

prov1_smtp:
driver = smtp
interface = 1.1.3.3
helo_data = mail.domain.com
Автор: shadowmaster63
Дата сообщения: 22.03.2012 02:03
remote_smtp:
driver = smtp
interface = ${lookup mysql{select ip from domain where domain = '$sender_address_domain'} {$value} {BASEIP} }
helo_data = ${lookup mysql{select domain from domain where domain = '$sender_address_domain'} {$value} {$primary_hostname} }

Но этот транспорт выполняется почему то только для писем с самого сервера если же я использую любой почтовый клиент то там уже и локалхост и имя компа попадает в helo

remote_smtp:
driver = smtp
helo_data = $sender_address_domain


Тоже самое,... при тесте на сервере все отлично, но стоит только подключиться почтовым клиентом как в helo_data оказывается localhost или еще чего

Автор: Alukardd
Дата сообщения: 22.03.2012 02:04
vlary
Цитата:
По умолчанию в EHLO, HELO Exim использует primary_hostname
мб конечно Debian'овские сборщики поковыряли стандартный конфиг, но тем не менее у меня там значится следующее: =${lookup dnsdb {ptr=$sending_ip_address}{$value}{$primary_hostname}}, т.о. у меня по умолчанию подсовывается ptr запись (вот и ответ как меня пропускали всё это время с косячным primary_hostname)
Автор: shadowmaster63
Дата сообщения: 22.03.2012 02:17
Мой вопрос пока снимается с повестки дня
Сейчас обнаружил что реджектит мои письма мой же экзим, будь он не ладен
Пойду поковыряю acl

Придется просить вас о помощи ибо я не в состоянии сейчас это исправить


Код:
accept hosts = :

deny message = Reject: incorrect symbol in address
log_message = REJECT: incorrect symbol in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
delay = 30s

deny message = Reject: incorrect symbol in address
log_message = REJECT: incorrect symbol in address
domains = !+local_domains
local_parts = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
delay = 30s

deny condition = ${if eq{$sender_helo_name}{}{yes}{no}}
message = Reject: HELO/EHLO require by SMTP RFC
log_message = REJECT: HELO/EHLO require by SMTP RFC
delay = 30s

accept authenticated = *

deny condition = ${if isip{$sender_helo_name}{yes}{no}}
hosts = !+relay_from_hosts:*
message = Reject: We don't allow domain literals, many spam...
log_message = REJECT: We don't allow domain literals, many spam...
delay = 30s

deny condition = ${if match_domain{$sender_helo_name} \
{$primary_hostname:+local_domains:+relay_to_domains} \
{true}{false}}
message = Reject: Message was delivered by ratware - own
log_message = REJECT: remote host used our name in HELO/EHLO.
delay = 30s

deny condition = ${if match{$sender_helo_name}{\N_\N}{yes}{no}}
message = Reject: Invalid symbols in HELO
log_message = REJECT: Invalid symbols in HELO
hosts = !127.0.0.1 : !localhost : !+relay_from_hosts : *

deny message = Reject: Invalid address
log_message = REJECT: Dot-starting address
senders = \N^\.|\.@\N

deny message = "Ничего не подошло?"
Автор: vlary
Дата сообщения: 22.03.2012 10:25
shadowmaster63 Тебе просто нужно разрешить почту из локальной сети:

Код: hostlist local_hosts = 127.0.0.1 : 192.168.1.10 : 2.2.2.2 : 1.1.3.3
hostlist relay_from_hosts = 192.168.1.0/24 : 2.2.2.2/26 : 1.1.3.3/27
..........................
accept hosts = :

deny message = Reject: incorrect symbol in address
log_message = REJECT: incorrect symbol in address
domains = +local_domains
local_parts = ^[.] : ^.*[@%!/|]
delay = 30s

accept hosts = +local_hosts : +relay_from_hosts
..............................
Автор: shadowmaster63
Дата сообщения: 22.03.2012 10:45
Не катит к сожалению я же не из локальной сети отправляю... из локальной сети это когда из консоли сервера.. а там и так все норм было.... я из внешней сети подключаюсь к серверу и пытаюсь отправить так и реджектит
если поможет могу полный конфиг выложить уже мозг расплавился... третий день не спал..

Я не пойму почему письмо проходит все deny and accepts..
Автор: vlary
Дата сообщения: 22.03.2012 11:14
shadowmaster63
Цитата:
я же не из локальной сети отправляю... из локальной сети это когда из консоли сервера..
Из консоли это когда локалхост.
Ну а из внешней сети надо с авторизацией, и авторизовавшемуся разрешить любое ХЕЛО, релей и так далее.

Автор: Alukardd
Дата сообщения: 22.03.2012 12:49
shadowmaster63
exim -bh <ip_address> - эмулирует smtp сессию с указанного ip.
Посмотрите в этом чудесном режиме, что и как у вас проверяется. Telnet команды найдёте в инете, если не знаете.
Автор: shadowmaster63
Дата сообщения: 22.03.2012 21:21
exim -bh 2.95.126.64

**** SMTP testing session as if from host 2.95.126.64
**** but without any ident (RFC 1413) callback.
**** This is not for real!

>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 2.95.126.64
>>> IP address lookup using gethostbyaddr()
>>> IP address lookup failed: h_errno=1
LOG: no host name found for IP address 2.95.126.64
>>> host in host_reject_connection? no (option unset)
>>> host in "192.168.1.0/24 : 2.2.2.2/26 : 1.1.3.3/27"? no (end of list)
>>> host in sender_unqualified_hosts? no (end of list)
>>> host in recipient_unqualified_hosts? no (end of list)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
220 rdsm-parts.ru ESMTP Exim 4.72 Thu, 22 Mar 2012 21:19:50 +0300
Автор: vlary
Дата сообщения: 22.03.2012 21:29
shadowmaster63 Ты все же объясни, откуда хочешь сейчас через свой Exim письмо послать? Из локальной сети? Или из чужой через интернет?
Автор: shadowmaster63
Дата сообщения: 22.03.2012 22:01
Из чужой интернет...
Автор: vlary
Дата сообщения: 23.03.2012 10:21
shadowmaster63 Это откуда?
Цитата:
host in "192.168.1.0/24 : 2.2.2.2/26 : 1.1.3.3/27"? no (end of list)
Я же дал это в качестве примера, нужно было заменить на свои адреса.
220 rdsm-parts.ru ESMTP Exim 4.72 Thu, 22 Mar 2012 21:19:50 +0300 После этого руками нужно провести SMTP сессию, со всеми этими HELO, MAIL FROM:, RCPT TO: и так далее. Для starttls, правда, нужно поднапрячься, пароль закодировать...
Тебе проще использовать специальную утилитку swaks на Перле
Автор: shadowmaster63
Дата сообщения: 23.03.2012 11:09
Я бы хотел разрешить все внешние адреса, что бы с любого IP можно было отправлять.
Автор: vlary
Дата сообщения: 23.03.2012 11:31
shadowmaster63
Цитата:
Я бы хотел разрешить все внешние адреса, что бы с любого IP можно  было отправлять.
На радость спамерам? Алгоритм должен быть такой:
1. С айпи адресов твоей сети или доверенных сетей принимается почта с адресами получателей в любых доменах.
2. С любых айпи адресов принимается почта с адресами получателей твоих доменов (если не задействована проверка на спам).
3. С любых айпи адресов принимается почта с адресами получателей в любых доменах, если отправитель авторизовался.
4. Все остальное нещадно рубится.
Иначе спамеры через твой сервер выльют в интернет цистерны спама, и твой сервер окажется во всех блэклистах.


Автор: shadowmaster63
Дата сообщения: 23.03.2012 12:39
Я хотел третий вариант реализовать, но что то не получилось с правилами

И еще по поводу утилиты mimencode не нашел для Centos
Вроде есть аналог uuencode но тут таже запара
Ну я думаю они не понадобятся если реализовать третий вариант.
Я как раз так и хотел сделать что бы можно было отправлять почту на любые адреса получателей но при условии что клиент авторизован...

Страницы: 123456789101112131415161718192021

Предыдущая тема: Посоветуйте девайс для орг-ии VPN


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.