Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » FAQ по Exim MTA #2

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Открыть новую тему     Написать ответ в эту тему

ShriEkeR



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FAQ по Exim MTA #1

Текущая версия Exim 4.80

   Home page Автор Philip Hazel, University of Cambridge.
Exim - чертовски быстр, отличный выбор для загруженных систем. Свободно распространяемый Mail Transport Agent (MTA, лицензия GPL), обладающий возможностью очень гибкой и тонкой настройки, включая поиск конфигурационной информации в базах данных - mySQL, PostgresQL, Oracle, SQLite.., а также LDAP.  В Exim встроена поддержка Maildir (quota), SMTP-аутентификация, TLS/SSL, SpamAssassin, сканирование на лету антивирусом(ами), ACL, системные фильтры... Сомневающимся.
На многие вопросы помогут найти ответы рассылки: На русском + На английском
Документация на русском по Exim + много полезной инфы на www.lissyara.su

Установка почтового сервера на базе Exim с поддержкой виртуальный аккаунтов (MySQL).
Подробное руководство состоит из двух связанных частей:
   1. Установка и настройка Exim 4.20.
   2. Установка  и настройка Tpop3d с поддержкой виртуальных аккаунтов.
Внимательно читаем здесь © ginger
-=-=-=-
Улучшенный вариант части 1: Exim-4.50 + MySQL © ginger
-=-=-=-
Так как Tpop3d не совместим с MS Outlook Express 6, а также не поддерживает IMAP, автор рекомендует его заменить на Dovecot. Изменения, которые нужно сделать cмотрим здесь © ginger
-=-=-=-
Еще один вариант установки © Wombat
-=-=-=-
Exim+Courier-Imap+MySQL+ClamAV+DSPAM+SquirrelMail © Павел Семенец Искать по ctrl+F=Павел Семенец
-=-=-=-
Опции для сборки exim из портов (FreeBSD) © tankistua
 
Уважаемые коллеги!
 
Нам очень дороги ваши конфиги и логи на несколько страниц, но, поверьте, их гораздо приятнее читать когда они заключены в тэг more.

Всего записей: 6382 | Зарегистр. 27-09-2004 | Отправлено: 18:49 16-05-2011 | Исправлено: AkeHayc, 21:09 21-04-2013
batonser



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
 
acl_check_from:
 
#warn
#        set acl_m5  = ${lookup mysql{SELECT inactive FROM mailbox \
#                          WHERE `username`='${quote_mysql:$sender_address}'}}
 #       hosts = +relay_from_hosts
 
accept
 
 
acl_check_rcpt:
 
warn
       set acl_m6  = ${lookup mysql{SELECT inactive FROM mailbox \
                        WHERE `username`='${quote_mysql:$sender_address}'}}
       domains = +local_domains
 
#deny    message = "You are not allowed to send mail out office"
 #       hosts = +relay_from_hosts
 #      domains = !+local_domains
 #     condition = ${if eq {$acl_m5}{1}}
 
deny    message = "In my mailserver not stored this user"
        hosts = +relay_from_hosts
        domains = !+local_domains
        condition = ${if eq {$acl_m6}{1}}
 
 

 
Самое что интересное вот при таком раскладе, у меня почта работает так что по локалке все ходит на вне уходит письма только от тех у кого в бд стоит 0..  
 
т.е изходя из этого правила m5 m6 одинаково работают, даже когда оба включены

Всего записей: 27 | Зарегистр. 13-12-2010 | Отправлено: 08:54 08-09-2014 | Исправлено: batonser, 08:55 08-09-2014
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
batonser
Цитата:
т.е изходя из этого правила m5 m6 одинаково работают, даже когда оба включены
Они не могут одинаково работать, поскольку разные.
acl_m5 соответствует типу отправителя письма: 0 - внутренний активный, 1 - внутренний неактивный, 2 - внешний.  
acl_m6 соответствует типу получателя письма: 0 - внутренний активный, 1 - внутренний неактивный, 2 - внешний.
Логику  accept или deny в соответствии с их значением  я уже приводил ранее.
Здесь у тебя ошибка:
RCPT TO: jabber@kfm.kz  
>>> using ACL "acl_check_rcpt"  
>>> processing "warn"  
>>> check set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}  
>>>                  =  
Ты делаешь SELECT по адресу отправителя, а надо по адресу получателя.

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17278 | Зарегистр. 13-06-2007 | Отправлено: 12:48 08-09-2014 | Исправлено: vlary, 12:55 08-09-2014
try09

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток, вопрос немного не по теме, есть сервер с mailman+exim4+mysql. С недавнего времени начали жаловаться подписчики, что приходит много повторяющихся писем. На тестовый ящик с 1 расслки пришло 3 письма
 
cat /var/log/exim4/mainlog | grep "1XRDnZ-0001yH-L0" | grep "ххх@bk.ru"
2014-09-09 09:40:04 1XRDnZ-0001yH-L0 == ххх@bk.ru R=dnslookup T=remote_smtp defer (-18): Remote host mxs.mail.ru [217.69.139.150] closed connection in response to end of data
2014-09-09 10:24:49 1XRDnZ-0001yH-L0 == ххх@bk.ru R=dnslookup T=remote_smtp defer (-18): Remote host mxs.mail.ru [217.69.139.150] closed connection in response to end of data
2014-09-09 10:54:38 1XRDnZ-0001yH-L0 == ххх@bk.ru R=dnslookup T=remote_smtp defer (-18): Remote host mxs.mail.ru [217.69.139.150] closed connection in response to end of data
 
куда копать, может кто подскажет?

Всего записей: 12 | Зарегистр. 26-10-2009 | Отправлено: 11:23 09-09-2014
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
try09
Цитата:
вопрос немного не по теме
Вопрос действительно не по теме, вы не умеете пользоваться списками рассылок.
Как я подозреваю, ххх@bk.ru - это адрес какого-то списка рассылки, и письма рассылаются  
с этим же обратным адресом. Exim не может отправить кому-то из списка письмо, о чем
честно уведомляет автора письма. В результате уведомление рассылается по всему списку.

Цитата:
куда копать, может кто подскажет?
Наведите порядок в работе списков рассылки.
Письма туда должны уходить либо с реальным обратным адресом автора письма,
либо, если обратной связи не подразумевается, то с каким-нибудь noreply@bk.ru

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17278 | Зарегистр. 13-06-2007 | Отправлено: 12:18 09-09-2014
try09

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть некоторые трудности в пользовании рассылкой, но проблема немного в другом.
 
Существует список расслыки, при отправке на его адрес начинается рассылка. ххх@bk.ru - это мой тестовый ящик, подписанный для того, что бы убедиться в проблеме, т.к. на корпоративные ящики письма приходят в единичном екземпляре. А на этот ящик за сегодняшнее утро пришло уже более 3 писем.
 
Рассылка настроена на отправку сообщений от имени списка.
Кусок лога показал, т.к. каждое сообщение пришло, хотя в логе говорило, что не может.

Всего записей: 12 | Зарегистр. 26-10-2009 | Отправлено: 14:33 09-09-2014
batonser



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Здесь у тебя ошибка:
RCPT TO: jabber@kfm.kz  
>>> using ACL "acl_check_rcpt"  
>>> processing "warn"  
>>> check set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$sender_address}'}}  
>>>                  =  
Ты делаешь SELECT по адресу отправителя, а надо по адресу получателя.

 
 
т.е изначальна в вашей рекомендации была допущена ошибка!  
 
Будем тогда ковырять на адрес получателя.  
поковырял, попробовал правило вот так сделать:  
 
warn
       set acl_m6  = ${lookup mysql{SELECT inactive FROM mailbox \
                        WHERE `username`='${quote_mysql:$local_part@$domain}'}}
       domains = +local_domains
 
deny    message = "In my mailserver not stored this user"
        hosts = +relay_from_hosts
        domains = !+local_domains
        condition = ${if eq {$acl_m6}{1}}
 
 
 

Код:
rcpt to: jabber@domen.ru
>>> using ACL "acl_check_rcpt"
>>> processing "warn"
>>> check set acl_m6 = ${lookup mysql{SELECT inactive FROM mailbox WHERE `username`='${quote_mysql:$local_part@$domain}'}}
>>>                  = 1
>>> check domains = +local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "+local_domains"? yes (matched "+local_domains")
>>> warn: condition test succeeded
>>> processing "deny"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check domains = !+local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "deny"
>>> check hosts = +relay_from_hosts
>>> host in "+relay_from_hosts"? yes (matched "+relay_from_hosts" - cached)
>>> check domains = !+local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = +local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "+local_domains"? yes (matched "+local_domains")
>>> check local_parts = ^[.] : ^.*[@%!/|]
>>> jabber in "^[.] : ^.*[@%!/|]"? no (end of list)
>>> deny: condition test failed
>>> processing "deny"
>>> check domains = !+local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "!+local_domains"? no (matched "!+local_domains")
>>> deny: condition test failed
>>> processing "accept"
>>> check local_parts = postmaster
>>> jabber in "postmaster"? no (end of list)
>>> accept: condition test failed
>>> processing "accept"
>>> check hosts = wildlsearch;/usr/local/etc/exim/whitelist_host_names
>>> sender host name required, to match against wildlsearch;/usr/local/etc/exim/whitelist_host_names
>>> looking up host name for 10.10.***.***
>>> IP address lookup using gethostbyaddr()
>>> IP address lookup failed: h_errno=1
LOG: [5248] no host name found for IP address 10.10.***.***
>>> host in "wildlsearch;/usr/local/etc/exim/whitelist_host_names"? no (failed to find host name for 10.10.***.***)
LOG: [5248] list matching forced to fail: failed to find host name for 10.10.***.***
>>> accept: condition test failed
>>> processing "accept"
>>> check domains = +local_domains
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "+local_domains"? yes (matched "+local_domains")
>>> check verify = recipient
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> jabber@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: [5248] "jabber@domen.ru" from env-to rewritten as "jabber@domen.ru" by rule 1
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing jabber@domen.ru
>>> jabber in "passwd;jabber : lsearch"? no (end of list)
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "! +local_domains"? no (matched "! +local_domains")
>>> calling system_aliases router
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> jabber@domen.ru in "*@domen.ru"? yes (matched "*@domen.ru")
LOG: [5248] "jabber@domen.ru" from env-to rewritten as "jabber@domen.ru" by rule 1
>>> routed by system_aliases router
>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>> routing jabber@domen.ru
>>> jabber in "passwd;jabber : lsearch"? no (end of list)
>>> domen.ru in "domen.ru"? yes (matched "domen.ru")
>>> domen.ru in "! +local_domains"? no (matched "! +local_domains")
>>> calling dovecot_user router
>>> routed by dovecot_user router
>>> ----------- end verify ------------
>>> accept: condition test succeeded
250 Accepted
 

 
не могу понять правило вроде сработало, селект принял параметр 1, но письмо принялось  
 

Всего записей: 27 | Зарегистр. 13-12-2010 | Отправлено: 14:54 09-09-2014 | Исправлено: batonser, 15:22 09-09-2014
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
try09
Цитата:
Рассылка настроена на отправку сообщений от имени списка
Вот и получили, что просили, о чем я уже написал.
Цитата:
 А на этот ящик за сегодняшнее утро пришло уже более 3 писем.  
И остальным в списке, очевидно, тоже.
Либо меняй алгоритм работы списка, либо отлавливай в акцесс-листе на  RCPT-TO:
письма о недоставке ( MAIL-FROM:<> ) в адрес списка, и меняй получателя на постмастера.
Либо лови такие сообщения системным фильтром
Chapter 45 - System-wide message filtering

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17278 | Зарегистр. 13-06-2007 | Отправлено: 15:21 09-09-2014
batonser



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Все заработало правило, до вел до ума!!  
 
warn
       set acl_m6  = ${lookup mysql{SELECT inactive FROM mailbox \
                        WHERE `username`='${quote_mysql:$local_part@$domain}'}}
       domains = +local_domains
 
deny    message = "You are not allowed to send mail out office"
        hosts = +relay_from_hosts
        domains = !+local_domains
        condition = ${if eq {$acl_m5}{1}}
 
deny    message = "In my mailserver not stored this user"
        hosts = !+relay_from_hosts
        domains = +local_domains
        condition = ${if eq {$acl_m6}{1}}
 
это если вдруг кому то нужно будет аналогичное проделать...  
 
Спасибо Вам огромное, помогли очень очень.

Всего записей: 27 | Зарегистр. 13-12-2010 | Отправлено: 15:27 09-09-2014
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
batonser
Цитата:
т.е изначальна в вашей рекомендации была допущена ошибка!  
Вполне возможно. Я ведь рекомендации даю не для копи-паста,
а чтобы человек сам начал шевелить мозгами в правильном направлении.

Цитата:
не могу понять правило вроде сработало, селект принял параметр 1, но письмо принялось  
Если немного подумать над тем, что я набросал на скорую руку, то правило  
должно быть таким
 deny    message = "In my mailserver not stored this user"  
        hosts = ! +relay_from_hosts       //внешние отправители
        condition = ${if eq {$acl_m6}{1}}  
условие domains = +local_domains уже проверено в set acl_m6  
 
Добавлено:
Ну слава богу, поздравляю!

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17278 | Зарегистр. 13-06-2007 | Отправлено: 15:44 09-09-2014
try09

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
"Наведите порядок в работе списков рассылки.
Письма туда должны уходить либо с реальным обратным адресом автора письма"
 
Поменял, проблема перестала появляться, спасибо большое. Одно не понятно, почему с прошлым режимом данный сервер рассылки как минимум 6 месяцев работал без проблем.

Всего записей: 12 | Зарегистр. 26-10-2009 | Отправлено: 11:04 11-09-2014
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
try09
Цитата:
Одно не понятно, почему с прошлым режимом данный сервер рассылки как минимум 6 месяцев работал без проблем.
Видимо, просто раньше не было проблем с доставкой почты адресам, которые в списке.
А когда с одним из адресов возникла проблема, очевидный косяк тут же вылез наружу.


----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 17278 | Зарегистр. 13-06-2007 | Отправлено: 11:11 11-09-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dn1
Вопрос
 
Вот вам пример, проверил только что на себе:
 
auth_advertise_hosts = ${if or { {eq{$tls_cipher}{}} {match{$sender_host_name}{.*example\.pro\$}} }{}{*}}
 
В данном примере я просто реализовал проверку одного единственного домена. можно сделать чтение из файла. Собственно клиентам с домена example.pro не будет предоставлена возможность вводить команду AUTH.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 20:07 03-10-2014 | Исправлено: Alukardd, 13:02 04-10-2014
dn1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Спасибо за подсказку)

Всего записей: 48 | Зарегистр. 08-09-2006 | Отправлено: 21:33 03-10-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dn1
Тут если что ещё не разрешается авторизовываться без ssl/tls, просто у меня оно уже было и я дописал к нему доп условие. Если у Вас нету сертификатов на почте то надо вырезать этот момент из проверки.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 22:41 03-10-2014
dn1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Сертификаты я начал использовать сразу после установки exim. Так что мне это подходит.

Всего записей: 48 | Зарегистр. 08-09-2006 | Отправлено: 09:40 06-10-2014
dn1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Извиняюсь, а как Вы проверяли работоспособность? Добавил себе. Пытался имитировать подключение exim -dh ip_адрес_хоста который я прописал в конфиге и спокойно ввожу команду AUTH... Естественно сначала убрал проверку tls для теста. Может что-то делаю не правильно... Хочу заблокировать 1und1.com (IP 217.160.87.99)
auth_advertise_hosts = ${if match{$sender_host_name}{/1und1\.com/}{}{*}}
Пробую exim -dh 217.160.87.99

Всего записей: 48 | Зарегистр. 08-09-2006 | Отправлено: 15:57 06-10-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dn1
Правил на однмо сервере, дальше делал реальное подключение с работы, а не тесты exim'а, хотя разницы быть не должно.
 
Регулярку на сколько я знаю в / / брать не надо. Навредит или нет хз, но без него как Вы можете наблюдать в моём примере всё работает точно.
Если там есть поддомены и письмо пойдёт оттуда, то писать надо как я показал Вам — .*1und1\.com$

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 16:32 06-10-2014
dn1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd
Попробовал на своем рабочем домене...
Если делать локальный тест, то с Вашим правилом получаю на любые ip, после команды AUTH  
503 AUTH command used when not advertised
Если стучаться с внешки  
553 Initial data not expected
 
Не подскажите еще проверку в конфиге надо где-то в определенном месте ставить?..

Всего записей: 48 | Зарегистр. 08-09-2006 | Отправлено: 17:04 06-10-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dn1
На сколько я знаю, это стандартная переменная Exim'а, которая ограничивает вывод доступных методов для аутентификации по заданному условию. Вообще она создана для ограничения по ip адресам, но мы немного меняем ход событий за счёт условных выражений.
Цитата:
503 AUTH command used when not advertised
так и должно быть, именно это Вы и пытаетесь достичь.
Ну с внешки Вы что-то ещё забыли может? Например EHLO?
Если есть какие-то ошибки в написании выражения то они при попытке его проверить попадут в paniclog.

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6563 | Зарегистр. 28-08-2008 | Отправлено: 17:39 06-10-2014
dn1

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Alukardd

Цитата:
503 AUTH command used when not advertised

Есно это я и хочу получить) Только я написал
Цитата:
на любые ip, после команды AUTH

Да хоть яндексом пытаюсь представиться, получаю отлуп с этой ошибках, хотя должен делать только если совпадает с выражением, правильно же?
А с внешки ehlo не забыл... Ладно буду еще тестить. Не пойму где ошибка закралась...

Всего записей: 48 | Зарегистр. 08-09-2006 | Отправлено: 18:01 06-10-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » FAQ по Exim MTA #2


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru