Ноя
20
2008
По моим наблюдениям, когда sendmailовская очередь становится больше 1500 писем, начинаются сложности с пересылкой писем. Если почтовый трафик большой, постепенно это приводит к росту очереди, и когда писем становится больше 3000, очередь фактически умирает. После того как мы разобрались с причинами переполнения очереди. Будем спасать ситуацию. В первую очередь надо остановить sendmail.
Read more »
Ноя
19
2008
Для примера перенаправим почту домена hilik.org.ua в почтовый ящик пользователя hilik.
Для решения нашей задачи, понадобится внести «специальный» router в конфигурацию exim и «фейковый домен». Настройку начнем с того, что добавим домен, откроем в «любимом» текстовом редакторе
Read more »
Ноя
18
2008
У exim’a, есть мощная система, способная заменить и sieve и procmail. В отличие от упомянутых почтовых фильтров, фильтр эксима имеет более «человеческий» синтаксис, чем сразу и подкупает.
Read more »
Окт
21
2008
Появидась такая задача: разрешить отправку за пределы локального домена, только некоторым, emailы которых занесены в особый, утвержденный руководством список. Взял я exim и начал крутить, в итоге вот что получилось, приведенный код втавлять в начало acl_check_rcpt:
#По умолчанию никому не разрешено
#отправлять за пределы нашего домена
warn set acl_c4 = ${eval:0}
#Разрешаем отправку к локальным пользователям
warn domains = +local_domains
set acl_c4 = ${eval: 1}
#Разрешаем отправку пользователям описанным
#в файле /usr/local/etc/exim/sendertable.dbm
warn message = sender $sender_address
domains = !+local_domains
condition = ${if eq {${lookup{$sender_address}dbm{/usr/local/etc/exim/sendertable.dbm}}{yes}}
set acl_c4 = ${eval:1}
#Разрешаем отправку от пустого пользователя(всякие почтовые отлупы)
warn message = empty sender
domains = !+local_domains
condition = ${if eq {$sender_address}{}}
set acl_c4 = ${eval:1}
#А тут у нас непосредственная блокировка отправок тех кому не разрешено
#В предыдущих строках осуществлялась проверка и установка флагов
deny message = Not allowed sender
domains = !+local_domains
condition = ${if eq {$acl_c4}{0}}
/usr/local/etc/exim/sendertable.dbm получается так, создаем файл
/usr/local/etc/exim/sendertable такого формата:
Потом делаем:
exim_dbmbuild /usr/local/etc/exim/sendertable /usr/local/etc/exim/sendertable.dbm
остается перезапустить exim.
Окт
19
2008
Часто провайдеры закрывают отправку почты от клиентов, напрямую в интернет, предлагая воспользоваться их SMTP сервером, для отправки почты. Для того что бы воспользоваться провайдерским relayем из eximа, нужно вставить такой роутер:
smart_relay:
driver = manualroute
#Эта строка указывает, что роутер
#применяется для всех доменов, кроме локальных
domains = ! +local_domains
transport = remote_smtp
#Тут нужно указать ip адрес
#SMTP сервера провайдера
route_data = 89.252.0.132
no_more
no_verify_sender
Проверяем
exim -bt bill@microsoft.com
Получаем
bill@microsoft.com
router = smart_relay, transport = remote_smtp
host 89.252.0.132 [89.252.0.132]
Все работает замечательно.
Следует отметить, что если вы применяли роутер mailertable из статьи Маршрутизайция в эксим либо нечто подобное, то роутер smart_relay следует указать после него.
Окт
18
2008
Понадобился мне аналог mailertable из sendmailа, но в eximе.
В exim есть механизм routers, который и определяет куда направлять письмо.
Начинается секция routers с routerа dnslookup, благодаря этому роутеру и определяется маршрутизация в соответствии с MX записи DNS, в нашей ситуации это нам не поможет.
Поэтому мы добавим свой роутер mailrtable перед роутером dnslookup. В итоге у нас получается такая конфигурация
begin routers
mailertable:
driver = manualroute
domains = ! +local_domains
transport = remote_smtp
route_data = ${lookup{$domain}dbm{/usr/local/etc/exim/mailertable.dbm}}
dnslookup:
driver = dnslookup
domains = ! +local_domains
transport = remote_smtp
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
no_more
... далее стандартная конфигурация ...
Файл /usr/local/etc/exim/mailertable.dbm получаем так :
Берем любимый редактор и создаем файл
/usr/local/etc/exim/mailertable, такого формата
И после этого выполняем команду
exim_dbmbuild /usr/local/etc/exim/mailertable /usr/local/etc/exim/mailertable.dbm
Проверить что у нас получилось можно командой
exim -bt hilik@hilik.org.ua
По итогу мы должны увидеть:
hilik@hilik.org.ua
router = mailertable, transport = remote_smtp
host 192.168.0.1 [192.168.0.1]
Все работает замечательно.