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

» FAQ по Exim MTA #2

Автор: vlary
Дата сообщения: 14.01.2013 00:27
bzeek Содержимое этого хидера можешь сконструировать сам, определив значение переменной received_header_text.
Можешь убрать вообще, указав в транспорте headers_remove = Received
Автор: tankistua
Дата сообщения: 14.01.2013 08:20
bzeek

тебе скучно ? метод авторизации рассказывает сам экзим при подключении - зайди на 25-ый порт и напиши ehlo localhost

Что касается версии - обнови до актуальной и не надо ничего резать

З.Ы. почта - не секретный объект и открытый стандарт, а айпишник твой все равно доступен снаружи. Поэтому считаю очень глупой ситуацию просить помощи у людей, которым нафиг не нужно ломать твой сервер и прятать важную информацию. А твой сервак боты и так найдут - можешь не переживать
Автор: GaDiNa
Дата сообщения: 23.01.2013 18:58
доброго времени суток.

есть небольшой почтовый домен, который обслуживается exim-ом
exim живет в локальной сети и наружу смотрит через port forwarding роутера.
все ok, но возникают проблемы с ip роутера - он вечно в банлистах (adsl пул провайдера) и поэтому многие не принимают с него почту..

есть небольшой хостинг под Cpanel. я там могу создать новый аккаунт для моего почтового домена.. в DNS могу поменять MX сервера домена - чтобы почта приходила на адрес хостинга..
но как сделать чтобы она УХОДИЛА с этого адреса ?
не хочется ломать локальный exim - она работает вроде ничего, и вся локалка уже настроена на него.. просто хочется сделать както так, чтобы он всю исходящую почту отправлял на IP хостинга, и потом уже exim хостинга ее дальше пересылал..
доступа к конфе exima на хостинге нет. есть только доступ к Cpanel, но думаю этого хватит ?
Автор: Alukardd
Дата сообщения: 23.01.2013 21:03
GaDiNa
Все чёрные списки смотрятся при получении почты, если сервер отправляет почту, он в 95% случаев со списками не сверяется. Соответственно MX записи трогать не надо и принимайте почту как и раньше к себе на сервер, а не устраивайте геморрой с её пересылкой.
Что касается отправки через другой сервер:
3 - Сказать exim, что отправлять письма не через smtp транспорт, а через smarthost и соответствующим образом настроить данный транспорт. Вообще exim при установке спрашивает кем он будет, как запустить тот мастер повторно не помню, возможно, в Debian, это произойдёт если попросить dpkg-reconfigure. В любом случае можно исправить всё руками, в Debian, это файл /etc/exim4/update-exim4.conf.conf, там есть строка dc_eximconfig_configtype='internet', соответственно internet меняем на smarthost.
2 - Соответственно на хостинге, поднимаете ещё один почтовый сервер и настраеваете его как smarthost, только главное ограничить ip, иначе это open relay посреди интернета!
1 - И напоследок заносим ip хостинга в TXT запись вашего домена в качестве валидного почтового сервера для отправки писем (SPF).

Вроде ни чего не напутал...
Автор: vlary
Дата сообщения: 23.01.2013 21:20
GaDiNa Ну, сделать чтобы он всю исходящую почту отправлял на IP хостинга, легко. Вместо драйвера dnslookup используй manualroute

Код: smart_route:
driver = manualroute
domains = ! +our_domains
transport = main_smtp
route_list = * exim.hosting.ru
..................
begin transports
main_smtp:
driver = smtp
Автор: GaDiNa
Дата сообщения: 23.01.2013 21:30
Alukardd

Цитата:
Все чёрные списки смотрятся при получении почты, если сервер отправляет почту, он в 95% случаев со списками не сверяется. Соответственно MX записи трогать не надо и принимайте почту как и раньше к себе на сервер, а не устраивайте геморрой с её пересылкой.

все верно.
только у меня проблема то - с моего локального екзима почта не везде доходит, потому что ip адрес его (роутера) забанен везде. хоть я и не рассылаю спам, просто ip этот в ADSL пуле провайдера - а эти пулы как правило по дефолту в "красной зоне".. еще у лисяры чтото было на этот счет кажется..

вобщем мне надо просто поменять ip с которого моя почта будет уходить наружу, вот я и вспомнил про свой шаред хостинг..
к сожалению доступа к настройке exim там нет.. только сипанель.. видими ничего не поделаешь в этом случае.

спасибо всем за советы..
Автор: vlary
Дата сообщения: 23.01.2013 22:30
GaDiNa На хостинге обычно предоставляют услуги почты, но не выделенного почтового сервера.
Хотя при любом раскладе можно воспользоваться отправкой с SMTP авторизацией через имеющийся эккаунт, допустим, это user@domen.ru.
Надо только немножко изменить конфиг местного эксима:

Код: main_smtp:
driver = smtp
hosts_require_auth = exim.hosting.ru
hosts_try_auth = exim.hosting.ru

begin authenticators
login:
driver = plaintext
public_name = LOGIN
client_send = ": user@domen.ru : password"
Автор: Alukardd
Дата сообщения: 24.01.2013 07:45
vlary
Эм... Если отправлять с внешней клиентской аутентификацией, то имя отправителя будет тогда с ящика user@domain.ru, правильно ведь? Сервер не даст MAIL FROM, ставить что попало, кроме имени от которого прошла аутентификация? Кстати, где это ограничение в конфиге exim'а?
Автор: tankistua
Дата сообщения: 24.01.2013 08:14
Alukardd
в acl-ях :) так что смотря как настроен екзим.
Автор: Alukardd
Дата сообщения: 24.01.2013 08:17
tankistua
Ну я его там не нашёл, только что пролазил, понятно что должно быть в acl'ях...
Сейчас попробую отправить от левого имени.

Добавлено:
1 — fail, у меня нету этой проверки, я отправил письмо от имени отличного от того с которым прошёл AUTH.
2 — у меня почему-то openssl клиент валиться(рвёт сессию) при попытке renegotiation, пришлось разрешать проходить аутентификацию без SSL'я, на время теста, обычные MUA, в т.ч. RoundCube норм работает с ssl'ем (465 порт)...
Автор: vlary
Дата сообщения: 24.01.2013 09:32
Alukardd
Цитата:
Эм... Если отправлять с внешней клиентской аутентификацией, то имя отправителя будет тогда с ящика user@domain.ru, правильно ведь?
Неправильно. Авторизация и MAIL FROM не имеют ничего общего, если это специально не прикручено.
Посему после авторизации MAIL FROM может быть какой заблагорассудится.

Цитата:
Кстати, где это ограничение в конфиге exim'а?
Как уже верно заметил tankistua, в acl-ях . Значит, изначально там этого нет. Но если есть такая необходимость, то в acl_smtp_mail проверяем что $authenticated_sender и $sender_address совпадают, если нет, то посылаем лесом.


Автор: Alukardd
Дата сообщения: 24.01.2013 09:33
Начал искать как сделать проверку, и мало того, что примеров не нашёл, так я не нашёл в какую переменную exim записывает имя прошедшего аутентификацию! Неужто надо самому получать переменную в authenticators, например в plain_server: sender_authname = ${local_part:$auth2} и потом использовать эту переменную в ACL, а она вообще сохранится?

Добавлено:
vlary
Цитата:
$authenticated_sender
видел только одно упоминание в документации в секции 40.3, но что именно там храниться не видел...
Ок, спасибо, сейчас попробую прикрутить, только надо более сложную проверку замутить что бы слать можно было от любого имени отмеченного в таблице aliases в БД, что бы пользователь не только мог получать письма на несколько имён, но и отправлять от них мог.

Добавлено:
Во, нашёл про $authenticated_sende в секции 33.2.

Добавлено:
Пока могу сказать, что по умолчанию она не определена... Будемс разбираться.
Автор: GaDiNa
Дата сообщения: 24.01.2013 10:28
спасибо
в любом случае прийдется покупать vps каконить чтобы на нем релей построить..
Автор: vlary
Дата сообщения: 24.01.2013 10:41
Alukardd
Цитата:
Пока могу сказать, что по умолчанию она не определена... Будемс разбираться.
Есс-но. Она становится определена только после успешной авторизации.

Автор: Alukardd
Дата сообщения: 24.01.2013 10:56
vlary
Эм... Разумеется) Я её проверяю в acl_smtp_mail. Собственно она у меня не определена. Правда я нашёл что то что мне нужно хранится в $authenticated_id. И попадает оно туда в каждом аутентификаторе таким образом: server_set_id = $auth2, в случае plain.
Автор: GaDiNa
Дата сообщения: 30.01.2013 18:29
купил vps
ткните плиз в какойнить более менее свежий мануал по настройке exim в качестве релея в моей ситуации..
Автор: vlary
Дата сообщения: 30.01.2013 21:34
GaDiNa
Цитата:
ткните плиз в какойнить более менее свежий мануал по настройке exim
Ну, самый свежий мануал, конечно, здесь: Ссылка
Если английский ломает, есть конфиг с каментами на русском: Ссылка
Ну и куча всего на сайте у Лисяры
Автор: GaDiNa
Дата сообщения: 31.01.2013 18:01
в centos 6.3 yum упорно не желает находить exim..
зато там сразу стоял postfix - прикрутил его в качестве релея и почта через него ушла..
теперь возникло несколько концептуальных вопросов..
это ж хочется чтобы почта не только релеилась наружу но и принималась внешним почтовиком на vps и главное чтобы какимто образом уходила на мой локальный exim, который уже раскладывает по maibox-ам...
про постфикс буду гуглить, а сам exim то как научить принимать почту только от постфикса ?
или не нужно так делать. пусть он тоже остается MX-ом чтоли.. вдруг vps будет недоступен
Автор: vlary
Дата сообщения: 31.01.2013 21:27
GaDiNa
Цитата:
в centos 6.3 yum упорно не желает находить exim..
в centos 6.3 exim 4.80.1 прекрасно компилится из исходников, что я делал не далее как пару недель назад.
Цитата:
а сам exim то как научить принимать почту только от постфикса ?
Да без проблем. Пара строчек в акцесс-листе.
Цитата:
пусть он  тоже остается MX-ом чтоли..
Хозяин - барин...


Автор: Alukardd
Дата сообщения: 11.02.2013 15:24
Приветствую.

У меня появился непоняток один, касательно Reverse DNS Lookup.

Предположим надо обслуживать несколько доменов. Соответсвенно почта будет ходить от user@company.ru и user@company2.com.
Внешний IP один (1.2.3.4). На него созданы соответсвующие A и PTR записи — mail.holding.org.

Сможет ли такая конструкция пройти проверку?:
deny
message = X-Host-Lookup-Failed: Reverse DNS lookup failed for $sender_host_address (${if eq{$host_lookup_failed}{1}{failed}{deferred}})
condition = ${if and{{def:sender_host_address}{!def:sender_host_name}}{yes}{no}}


Главное ведь что бы A и PTR записи были привязаны к одному и тому же IP? А от какого почтового домена идёт письмо не важно???
Автор: vlary
Дата сообщения: 11.02.2013 15:48
Alukardd
Цитата:
Главное ведь что бы A и PTR записи были привязаны к одному и тому же IP? А от какого почтового домена идёт письмо не важно?
Абсолютно верно. Пример - Гуглопочта. На ней сидят корпоративные почтовые домены тысяч мелких контор, тем не менее, все эти почтовые сервера - *.GOOGLE.COM либо *.GOOGLEMAIL.COM.
Вот например:

Код: nslookup -type=mx diamant-irkutsk.ru
Server: 10.1.1.182
Address: 10.1.1.182#53

Non-authoritative answer:
diamant-irkutsk.ru mail exchanger = 20 ALT1.ASPMX.L.GOOGLE.COM.
diamant-irkutsk.ru mail exchanger = 20 ALT2.ASPMX.L.GOOGLE.COM.
diamant-irkutsk.ru mail exchanger = 30 ASPMX4.GOOGLEMAIL.COM.
diamant-irkutsk.ru mail exchanger = 30 ASPMX2.GOOGLEMAIL.COM.
diamant-irkutsk.ru mail exchanger = 10 ASPMX.L.GOOGLE.COM.
diamant-irkutsk.ru mail exchanger = 30 ASPMX5.GOOGLEMAIL.COM.
diamant-irkutsk.ru mail exchanger = 30 ASPMX3.GOOGLEMAIL.COM.
Автор: Alukardd
Дата сообщения: 11.04.2013 12:09
Приветствую.
Хочу что бы с одного из серверов в локалке почта отправленная root'у уходила на ящик админу на внешний сервак. В данном случае внешний сервак, находится в локале.
Добавил в /etc/aliases строку: root: admin@domain.ru
Выполнил: dpkg-reconfigure exim4-config поставил в состояние "internet" из "local only", да бы вооще была возможность слать на внешний email.
Проверяю: mail -s "test" root <<< "test message" — хрен там, вылазит ошибка в логах о том, что нету MX записи валидной.
Далее проверку делаю уже по факту ошибки: exim -bt root
Цитата:
# exim -bt root
R: system_aliases for root@server.lan.domain.ru
R: dnslookup for admin@domain.ru
admin@acribia.ru is undeliverable: all relevant MX records point to non-existent hosts
<-- root@server.lan.domain.ru

При этом [more=dig MX domain.ru]; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> MX domain.ru
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50815
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;domain.ru.            IN    MX

;; ANSWER SECTION:
domain.ru.        86400    IN    MX    400 mail.domain.ru.

;; AUTHORITY SECTION:
domain.ru.        86400    IN    NS    ns.domain.ru.

;; ADDITIONAL SECTION:
mail.domain.ru.    86400    IN    A    192.168.139.11
ns.domain.ru.        86400    IN    A    192.168.139.17

;; Query time: 0 msec
;; SERVER: 192.168.139.17#53(192.168.139.17)
;; WHEN: Thu Apr 11 13:06:15 2013
;; MSG SIZE rcvd: 98

[/more] разумеется отдаёт нужные записи. Но у меня есть подозрение, что он пытается получить MX запись для своего имени, т.е. MX для server.lan/domain.ru, а на него разумеется на DNS сервере ни чего нету кроме A и PTR записи.

В локалке есть настроенный и работающий почтовый сервер (тоже на exim4, хотя пока это не важно). Живёт по адресу mail.domain.ru(192.168.139.11) отвечает за почтовый домен domain.ru.

ОС: Debain 7.0, exim 4.80.

ЧЯДНТ?
Попробовал поставить в /etc/aliases вместо корпоративного admin@domain.ru свой домашний alukardd@homedomain.org. И тут же команда exim -bt root успешно отрапортовала, что router = dnslookup, transport = remote_smtp и всё там на месте. Нор разницы в ответах dig я не вижу.
Автор: Alukardd
Дата сообщения: 11.04.2013 14:12
Усё, решил вопрос!!!
Ужос, а не дефолтные правила.
В router'е dnslookup было ограничение ignore_target_hosts. Которое не допускает посылку сообщений по локалке. Какого хрена вообще? Закомментировал, всё ок теперь.
Автор: Alukardd
Дата сообщения: 12.04.2013 14:01
Очередной "привет" и вопрос.
Есть exim 4.80.
Возникла необходимость проверки логина/пароля через несколько баз. Как лучше это реализовать?
Сейчас используется pam, хочу добавить mysql.
Достаточно в server_condition указать [more=${if or {}{}}]server_condition = "${if or {if pam{${local_part:$auth2}:$auth3}{1}{0}}{lookup mysql{SELECT id FROM users \
WHERE id = '${quote_mysql:${local_part:$auth2}}' \
AND mbox_host = '${quote_mysql:${domain:$auth2}}' \
AND password = MD5('${quote_mysql:$auth3}') \
AND active = 'Y'}{yes}{no}}}"[/more]? Правильно ли написаны условия?) Вопрос в основном касается второго if, того что перед pam стоит. И не нужно ли перед {lookup} ставить амперсанд?

p.s. Dovecot вроде без проблем съест несколько баз.

p.p.s. Мб лучше вообще отдать всю аутентификацию на откуп Dovecot SASL? Dovecot 2.1.7.
Автор: vlary
Дата сообщения: 12.04.2013 14:42
Alukardd Собственно, если используется Dovecot для доступа к почтовым ящикам, то вполне достаточно аутентификацию переложить на него. Для exim она по большому счету и не нужна, за исключением случаев необходимости отправки писем из-за пределов корпоративной сети. И то это можно решить с помощью веб-морды или VPN.
Автор: Alukardd
Дата сообщения: 12.04.2013 14:47
vlary
Цитата:
за исключением случаев необходимости отправки писем из-за пределов корпоративной сети
? А с пределов корпоративной сети? Я вообще-то всегда пользователей аутентифицирую. А то будут слать от чужого имени письма. А так же вирусню схватят и будут спам расслать с моего сервера, вотЪ ещё!

Ок, тогда попробую использовать Dovecot как аутентификатор.
Ну а вообще мне для справки — я правильно решил про {if or {}{}}?
Автор: vlary
Дата сообщения: 12.04.2013 15:19
Alukardd
Цитата:
Ну а вообще мне для справки — я правильно решил про {if or {}{}}
Так проверить надо просто с помощью exim -bh. Если с синтаксисом что-то не так - сразу ругнется, если результат не тот, что ожидался - дебаг сессии покажет. А продираться через нагромождение скобок - это не для вечера в пятницу.
Автор: Alukardd
Дата сообщения: 12.04.2013 15:26
vlary

Приладил сейчас driver = dovecot.
Накрылось условие о проверке condition = ${if eq{$sender_address}{$authenticated_id}{no}{yes}}, пока заменил на $sender_address_local_part, т.к. в переменную server_set_id вписывает только имя пользователя и как это изменить пока не понял.

Добавлено:
Если в Dovecot поменять auth_username_format = %n, на %n@%d, то вообще аутентификация накрывается вся) Видимо это верный путь, но надо что бы Dovecot научился нормально такую связку через базу проводить. Используется userdb - passwd и passdb - pam. Так что вотЪ.
Хотя это уже выходит за рамки темы по Exim.
Автор: DJs3000
Дата сообщения: 20.05.2013 20:47
Есть Exim 4.8 + dovecot 2.1.15
Нужно сделать blacklist чтобы можно было в нем указывать конкретный адрес нарушителя.
Так же не помешает вариант со список где можно указать просто домен чтобы любые ящики с него режектились. Exim настроен по всё той же статье лысяры.
Автор: vlary
Дата сообщения: 20.05.2013 23:04
DJs3000

Цитата:
Нужно сделать blacklist чтобы можно было в нем указывать конкретный адрес нарушителя
Если список небольшой, можно ограничиться обычным текстовым файлом и использовать lsearch. Если приличных размеров, лучше использовать базу SQLite. Примеры того и другого в мануале имеются.
Цитата:
Так же не помешает вариант со список где можно указать просто домен чтобы любые ящики с него режектились.
Здесь надо четко разделить два понятия. Собираешься ли ты блокировать по домену хоста, который пытается отправить тебе почту, или по значению домена в MAIL FROM: ?
В первом случае можно просто создать файл с нехорошими доменами.
со строчками типа
^.*\.versanet\.de$
^.*\.verizon\.net$
и прописать правило
deny
message = We not accept mail from spamers
condition = ${if def:sender_host_name {true}{false}}
condition = ${lookup{$sender_host_name}nwildlsearch{/path/to/spamhosts}{yes}{no}}
Ну а во втором случае можно также использовать базу на SQLite.

Страницы: 123456789101112131415161718192021

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


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