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

» FAQ по Exim MTA #2

Автор: vlary
Дата сообщения: 20.09.2011 01:54
syrus
Цитата:
У филиалов динамический IP. Возможно ли их прописать каким-то образом?
У них у всех там почтовые сервера стоят? Проще им работать с вашим сервером напрямую, с авторизацией.
Цитата:
А где увидеть, включена ли фильтрация или нет?
Все прописано в конфигурационном файле эксима.


Автор: syrus
Дата сообщения: 20.09.2011 03:03
Не сразу заметил, что сообщение на новой странице уже...

Насколько я знаю, отправка осуществляется с авторизацией, почтовый сервер работает на IMAP, сервер стоит у нас, филиалы работают через него.

Я ранее не работал с почтовым сервером, потому не все ясно, что вы говорите. Подскажите, для версии exim 4.69 ссылки в шапке дадут ответы на мои вопросы? Или есть материалы для новичков?
Автор: vlary
Дата сообщения: 20.09.2011 10:21
syrus
Цитата:
Насколько я знаю, отправка осуществляется с авторизацией
Тогда нужно в акцесс-листах поправить, чтобы авторизованные клиенты не подвергались грейлистингу.

Цитата:
Подскажите, для версии exim 4.69 ссылки в шапке дадут ответы на мои вопросы?
Безусловно. Каких-то радикальных изменений в идеологии давно не было.

Цитата:
Или есть материалы для новичков?
Как сказал один математик одному правителю: "В математике нет королевских путей". Но на лиссяре, по крайней мере, документация по- русски, так что если есть проблемы с английским, то это будет способствовать лучшему пониманию.



Автор: syrus
Дата сообщения: 21.09.2011 00:10
Спасибо большое, уже читаю-изучаю.
UPD Причина оказалась наибанальнейшая: проблемы на линии.
Автор: rusik_gluk
Дата сообщения: 22.09.2011 15:12
Есть exim+spamassassin и все работает для всех.
Как настроить список пользователей, для которых не будет проверяться и фильтроваться спам?
Заранее спасибо.
Автор: vlary
Дата сообщения: 22.09.2011 17:31
rusik_gluk Да очень просто. Делаешь любой список юзеров (текстовый файл, база и т.д.). В акцесс-листе на стадии проверки RCPT TO: проверяешь, что $local_part в этом списке, и добавляешь в письмо какой-либо заголовок типа X-LOVE-SPAM: и делаешь акцепт.
А там, где идет фильтрация, указываешь, чтобы письма с этими заголовками не фильтровались.
Автор: rusik_gluk
Дата сообщения: 23.09.2011 11:39
vlary
Прописал это:

Код: acl_check_rcpt:
$local_part = /etc/exim4/lovespamuser
warn message = X-LOVE-SPAM:
accept
Автор: rusik_gluk
Дата сообщения: 29.09.2011 14:34
Решение не найдено, вопрос закрыт.
Автор: Py6JIb
Дата сообщения: 07.10.2011 02:18
Здравствуйте! - Помогите составить правило для exim.
Я ищу письма, в заголовках To: которых нет моего домена.
Тоесть мне просто нужно определить наличие одной строки в другой.
Я насочинял правило, но кажется оно не работает.
deny
condition = ${if !match\
{$h_to:}\
{@domain.ru}\
{yes}{no}}
Автор: Gentington
Дата сообщения: 10.10.2011 02:19
Здравствуйте!

Есть сервер на CentOS 5.4, связка exim+spamassassin+calmav+courier-imap
При отправке письма юзеру с другого сервера в логах пишет:
Format error in spool file ...
и письмо замораживается. Если отправляю локально с помощью mail, все приходит.
Читал где-то что может быть связано с правами на папку спула, проверил права на папку и файлы все в норме.
Тут задавался такой вопрос, но ответа не последовало, в чем еще может быть причина?
Автор: vlary
Дата сообщения: 10.10.2011 15:22
Gentington Попробуй выставить права на бинарник Эксима rwsr-xr-x
Автор: Dimitrijj
Дата сообщения: 12.11.2011 22:37
Exim 4.72. Принимает почту для domain.dom. Приходит письмо на user@domain.dom, user в domain.dom не существует. Exim отправляет отлуп (bounce): unrouteable address.

Вопрос: как сделать чтобы

ИЛИ вся почта, приходящая на не существующие в domain.dom адреса попадала в ящик admin@domain.dom и отлупы не отправлялись

ИЛИ чтобы отлупы направлялись в admin@domen.dom а не на адрес отправителя.


Автор: vlary
Дата сообщения: 13.11.2011 00:33
Dimitrijj Или иметь на эксиме список всех реальных адресов @domain.dom, или проверять наличие адреса во время обработки RCPT TO: (require verify = recipient),
Либо пусть на том сервере @domain.dom принимают все без разбора.
Автор: gloomymen
Дата сообщения: 13.11.2011 13:22
Dimitrijj

Цитата:
ИЛИ вся почта, приходящая на не существующие в domain.dom адреса попадала в ящик admin@domain.dom и отлупы не отправлялись

можно узнать зачем это вам?
vlary

Цитата:
Либо пусть на том сервере @domain.dom принимают все без разбора

учитывая товарищей с helo welcome.com, напринимать можно мнооооого
Автор: Dimitrijj
Дата сообщения: 13.11.2011 18:21
vlary

Цитата:
Или иметь на эксиме список всех реальных адресов @domain.dom

Список есть в /etc/passwd. Подойдет?


Цитата:
или проверять наличие адреса во время обработки RCPT TO: (require  verify = recipient)

Если я правильно понимаю, то в этом случае сообщение не будет доставлено в admin@domen.dom. Будет ли отправлен отлуп? На какой адрес?


Цитата:
Либо пусть на том сервере  @domain.dom принимают все без разбора

Без разбора не хотелось бы. Но и в этом случае почта на не существующие в domain.dom адреса сама по себе не попадет в admin@domen.dom, нужно ее как-то перенаправить.

Я пока добавил последним еще один router:
driver = redirect
domains = +local_domains
data = admin
errors_to = admin
Сообщения существующим адресатам до него не доходят. Послал несколько тестовых писем не существующим адресатам и они попали в admin@domen.dom. Имеет такое решение право на жизнь?

Также очень хочется узнать можно ли перенаправить отлупы?


Добавлено:
gloomymen

Цитата:
можно узнать зачем это вам?

Письма эти шлет разное ПО и оборудование (события, логи ...). Отлупы на обратные адреса слать бессмысленно, но почтовик-то этого не знает, шлет и получает еще отлуп или реджект. Ловить все это по логам и бежать исправлять некогда. А так можно будет и письма получать и взять на заметку, чтобы исправить при случае.
Автор: vlary
Дата сообщения: 13.11.2011 18:59
Dimitrijj
Цитата:
Список есть в /etc/passwd. Подойдет?
Вполне. В акцесс-листе для RCPT TO: выполняем нечто типа ${lookup{$local_part}lsearch{/etc/passwd}}, если ничего не находит, делаем отлуп.
У меня лично на хосте, где Эксим, юзеров нет, я их базу держу на Постгресе, и получаю оттуда несколько local_parts списков - групповые адреса, те, кто не хочет получать спам, те, кто хочет...
Если развернута АД, можно получать список юзеров через LDAP.

Автор: Dimitrijj
Дата сообщения: 13.11.2011 22:14
vlary
Спасибо. Я с Exim только вчера познакомился, наверное LDAP не осилю, да и пользователей на нем мало.

Как перенаправить отлупы нашел здесь: http://wiki.exim.org/FAQ/Routing_for_local_delivery/Q0416

Пока сделал так:

последний router
driver = accept
domains = +local_domains
transport = redirect_autoreply
no_verify
errors_to = admin

транспорт redirect_autoreply
driver = autoreply
to = admin
return_message = true
subject = User does not exist
text = Recipient $local_part@$domain does not exist
Автор: leximo
Дата сообщения: 30.11.2011 12:00
Здравствуйте есть Centos с exim и spamassassin. Недавно настраивал spam фильтр и что-то где-то неудачно настроил, перестал spamassassin отдавать письма exim. Т. е. фильтрации по spamassassin нет? только exim откидываеет письма. Помогите не могу разобраться, где у меня шибка? вот привожу конфиг spamassassin


Код: # These values can be overridden by editing ~/.spamassassin/user_prefs.cf
# (see spamassassin(1) for details)
# These should be safe assumptions and allow for simple visual sifting
# without risking lost emails.
trusted_networks 192.168.0.0/19
trusted_networks 127.
rewrite_header Subject *****SPAM*(_SCORE_)****
subject_tag *SPAM*_HITS_ points*
# Разрешаем автообучение антиспама
auto_learn 1
# Разрешаем использовать Bayes
use_bayes 1
# Путь к базам Bayes
bayes_path /etc/mail/spamassassin/bayes
# Автоматически назначать права на файлы Bayes
bayes_file_mode 0666
bayes_learn_to_journal 1
# Количество НЕспам-писем,после которого демон начинает использовать Bayes
bayes_min_ham_num 1
# Количество спам-писем,после которого демон начинает использовать Bayes
bayes_min_spam_num 1
# “Очки” писем, по которым они проходят или не проходят антиспам
# required_hits - та самая “серединка по очкам”
required_hits 2.0
#scores
header SEND_FROM_INSIDE X-Envelope-From =~ /\@(?:$localdomain\.ru)>$/
describe SEND_FROM_INSIDE Sent mail from inside
#score SEND_FROM_INSIDE -100
score SUBJ_FULL_OF8BITS 0.1
score IN_REP_TO -0.1
score HTML_WITH_BGCOLOR 3.6
score CTYPE_JUST_HTML 3.9
score BIG_FONT 2.7
score MONEY_MAKING 2.0
score WEB_BUGS 0.2
score MAILTO_LINK 1.3
score MAILTO_WITH_SUBJ 1.6
score MAILTO_WITH_SUBJ_REMOVE 2.2
score MAILTO_TO_SPAM_ADDR 2.0
score PORN_1 1.353
score PORN_10 0.266
score PORN_11 0.879
score PORN_12 0.826
score PORN_13 4.194
score PORN_3 0.805
score PORN_4 1.491
score PORN_6 3.319
score PORN_7 1.514
score PORN_8 0.2
score PORN_9 2.692
score INVALID_DATE_ODD_MONTH 1.9
score CHARSET_FARAWAY 2.0
score CHARSET_FARAWAY_HEADERS 1.8
score CHARSET_FARAWAY_BODY 1.9
score SUBJ_HAS_UNIQ_ID 2.5
score SUBJ_ENDS_IN_Q_MARK 0.2
score SUBJ_HAS_Q_MARK 0.5
score SUPERLONG_LINE 0.9
score LINES_OF_YELLING 0.5
score LINES_OF_YELLING_2 0.7
score LINES_OF_YELLING_3 0.8
score NO_REAL_NAME 0.9
score TO_LOCALPART_EQ_REAL 0.8
score FROM_ENDS_IN_NUMS 1.0
score FROM_HAS_MIXED_NUMS 2.3
score SUBJ_ALL_CAPS 0.5
score HTML_COMMENT_8BITS 0.01
score HEADER_8BITS 0.00
score TO_NO_USER 0.01
score FORGED_MUA_OUTLOOK 0.5
score X_AUTH_WARNING 0.01
score SUBJ_HAS_UNIQ_ID 9.99
score HTTP_USERNAME_USED 9.99
score FORGED_YAHOO_RCVD 9.99
score FORGED_JUNO_RCVD 16
score UNWANTED_LANGUAGE_BODY 1.02
score MLM 5.55
score RCVD_NUMERIC_HELO 4.95
####
score BAYES_80 9.0
score BAYES_70 7.5
score BAYES_60 6.0
score BAYES_50 5.0
score BAYES_40 3.0
#score BAYES_80 5.0
#score BAYES_70 4.5
#score BAYES_60 4.0
#score BAYES_50 3.0
#score BAYES_40 2.0
ok_languages en ru
ok_locales en ru
report_safe 0
# Разрешаем переписывать заголовки
rewrite_subject 1
subject_tag MESSAGE_MARKED_AS_SPAM
auto_whitelist_path /etc/mail/spamassassin/auto-whitelist
auto_whitelist_file_mode 0666
auto_learn_threshold_nonspam -2
auto_learn_threshold_spam 9
# А с этих разрешаем принимать почту и никогда не блокируем ее
whitelist_from *@itland.ru
# С этих адресов/хостов не принимать почту
blacklist_from *@odnoklassniki.ru
blacklist_from *@hotmail.com
blacklist_from *@ymail.com
blacklist_from *@msn.com
blacklist_from *@aol.com
blacklist_from *@cat.es
blacklist_from *@pmail.gen.nz
blacklist_from *@femenino.com
blacklist_from *@infonium.com
blacklist_from *@outblaze.com
# DOMAIN
blacklist_from *.au
blacklist_from *.gov
blacklist_from *.jp
blacklist_from *.it
blacklist_from *.at
blacklist_from *.kr
blacklist_from *.org
blacklist_from *.net
blacklist_from *.nz
Автор: leximo
Дата сообщения: 01.12.2011 07:21
Я не могу понять, вроде spamassassin работает, перезапускается, но не проверяет письма на спам, в exim строка прописана
Автор: dimawar
Дата сообщения: 15.01.2012 09:47
Здравствуйте!
Можно ли Exim настроить так, чтобы он был smtp-релеем для нескольких доменных имен, причем эти доменные имена обслуживались на разных серверах?
у меня следующая ситуация:
Стоит маршрутизатор (192.168.0.254), на котором прокинут 25-й порт на сервер Exim (192.168.0.100).
Exim должен заниматься приемом почты для доменов domain1.ru и domain2.ru .
Всю почту, которая приходит для domain1.ru надо пересылать на внутренний сервер Exchange 192.168.0.101;
Всю почту, которая приходит для domain2.ru надо пересылать на внутренний сервер Exim 192.168.0.102;
Проверка существования получателя для domain1.ru проходит через ldap сервера Exchange;
проверка существования получателя для domain2.ru проходит через smtp (или ldap, или mysql) второго сервера Exim;
Сейчас у меня работает:
Маршрутизатор, почтовый релей на базе Exim для сервера Exchange с авторизацией в LDAP.

Мне необходимо принимать почту для другого домена на другой внутренний сервер, по типу, как описано выше.
Как можно такое реализовать?
Автор: vlary
Дата сообщения: 15.01.2012 13:13
dimawar
Цитата:
Как можно такое реализовать?
Элементарно, Ватсон

Код: domainlist local_domains = @
domainlist relay_to_domain1 = domain1.ru
domainlist relay_to_domain2 = domain2.ru
domainlist our_domains = +local_domains : +relay_to_domains1 +relay_to_domains2

begin routers
dnslookup:
driver = dnslookup
domains = ! +our_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more


smart_route1:
driver = manualroute
domains = relay_to_domain1
transport = local_smtp
route_list = * 192.168.0.101

smart_route2:
driver = manualroute
domains = relay_to_domain2
transport = local_smtp
route_list = * 192.168.0.102

begin transports
remote_smtp:
driver = smtp
local_smtp:
driver = smtp
interface = 192.168.0.100
Автор: dimawar
Дата сообщения: 15.01.2012 14:08
Спасибо, с маршрутизацией понятно


Цитата:
Ну, с акцесс-листами через ldap и mysql сам разберешься, это не сложно, в мануале готовые строчки написаны.


сейчас у меня в ACL имеется проверка только для одного сервера по LDAP

Код: deny domains = +relay_to_domains
message = "Unknown user for this domain"
condition = ${if !match{${lookup ldap {LDAP_AD_MAIL_RCPT}}}\
{@MS_EXCHANGE_DOMAIN}{yes}{no}}
Автор: vlary
Дата сообщения: 15.01.2012 16:12
dimawar
Цитата:
как разделить проверку, чтобы для разных доменов было?
Ну это вообще азбука.
В acl_smtp_rcpt вставляешь:
deny message = User Not Found
domains = +relay_to_domain2
!verify = recipient/callout=2m,defer_ok,use_sender

Автор: lek
Дата сообщения: 30.01.2012 18:37
Уважаемые гуру.

Хочу перед SMTP авторизацией проверять наличие IP-адреса и email в таблице (которая заполняется при ошибках авторизации). Т.е. если слишком много ошибок - то не допускать к авторизации (чтобы не подбирали пароль). И если с проверкой IP всё получилось, то с проверкой email - нет.

Проверяю IP следующим образом:


Код:
M2K_CHECK_SMTP_AUTH_IP_BLOCK = ${if eq{1}{${lookup mysql{SELECT eximCheckIPAuthBlackList('${quote_mysql:$sender_host_address}')}{$value}fail}}{yes}{no}}

acl_smtp_auth = acl_m2k_auth

acl_m2k_auth:
deny
message = SMTP AUTH for host $sender_host_address is blocked. You can get access only via web interface
log_message = SMTP AUTH for host $sender_host_address is blocked. You can get access only via web interface: as=$authenticated_sender, ai=$authenticated_id, 1 = $1, 2 = $2, 3 = $3
condition = M2K_CHECK_SMTP_AUTH_IP_BLOCK

accept
Автор: vlary
Дата сообщения: 30.01.2012 20:57
lek
Цитата:
Т.е. если слишком много ошибок - то не допускать к авторизации (чтобы не подбирали пароль).
Зачем оно тебе? Поставь после ввода неправильного пароля задержку в 30 секунд - и пусть подбирают на здоровье. При нормальных паролях глядишь, через миллион лет подберут.
Автор: Alukardd
Дата сообщения: 30.01.2012 21:22
lek
Во первых в доке четко сказано, что нехер использовать $1,$2,$3 вместо них надо юзать $auth1,$auth2,$auth3. Первые оставлены для совместимости и юзанье их, как говорится, не всегда полезно для вашего здоровья.

По поводу ip - вы просто изобрели велосипед, вместо того, что заюзать fail2ban.
Что касается имени пользователя, то оно пишется в $auth1 или $auth2 в зависимости от типа авторизации.

Я бы вам рекомендовал все это в authenticators провернуть, не смотря на то, что для этого есть acl_smtp_auth... Хотя... В какой точно момент данные через этот acl проходят (что-то я не заметил в доке)?
Автор: lek
Дата сообщения: 30.01.2012 22:28
vlary
Как бы это реализовать, подскажи плиз? Всё равно ведь надо сохранять состояние и проверять его при аутентификации.

Alukardd
Можно и в аутентификаторы запихнуть. Правда из них можно вернуть либо accept, либо 535 Incorrect authentication data, но не какое-то сообщение. Ладно бы с пользователями, мне для лога бы Fail2Ban посмотрел - он парсит логи, не хотелось бы на это завязываться.
Автор: vlary
Дата сообщения: 30.01.2012 22:36
lek
Цитата:
Как бы это реализовать, подскажи плиз? Всё равно ведь надо сохранять состояние и проверять его при аутентификации.  
А чего его реализовывать? Просто перед выдачей 535 Incorrect authentication data подождать 30 секунд. А дабы не дергали в несколько потоков, поставить ограничение на число коннектов с одного айпи.

Автор: lek
Дата сообщения: 12.02.2012 21:15
vlary
Alukardd

Решил с помощью perl и memcache: server_condition вызывает функцию в perl, которая:
1. Смотрит, есть ли в мемкэше ключ с IP пользователя. Значением ключа являются timestamp (время, когда неправильно аутентифицировался), разделённые точкой с запятой.
Значения старше часа - удаляются
2. Аналогично, смотрит, есть ли в мэмкэше EMAIL пользователя
3. Вычисляет, не превышен ли порог ошибок по IP
4. Вычисляет, не превышен ли порог ошибок по EMAIL (он меньше, чем по IP)
5. Если порог не превышен, то собственно сама авторизация:

Код: $mysql_result = Exim::expand_string(${lookup mysql{...}});
Автор: vlary
Дата сообщения: 13.02.2012 09:47
lek
Цитата:
Заодно избавился от процедур и функций mysql. В памяти то оно побыстрее будет
Можешь посмотреть в сторону применения SQLite. У меня все списки (черные, белые, серые) на нем сделаны.

Страницы: 123456789101112131415161718192021

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


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