This is an old revision of the document!
Table of Contents
Быстрые заметки по Exim
Запуск очереди
root@host# exiqgrep -i | xargs exim -M
или
root@host# exim -q -v
Удалить писmмо из очереди
root@host# exim -Mrm 1ZEKTg-0001Vb-Kf
Если надо много писем, то можно так:
root@host# exiqgrep -i | xargs exim -M
Посмотреть заголовки письма
root@host# exim -Mvh 1ZEdbs-0007Ju-Gp
Посмотреть список писем в очереди
root@host# exim -bp
Будет видно id письма, поля from: и to:
Вывод:
20h 22K 1ZEdbs-0007Ju-Gp <aaa@bbb.ru> ccc@ddd.co.in D eee@fff.gov.cn
aaa@bbb.ru - поле from:
ccc@ddd.co.in - поле to:
D - флаг указывающий на то, что сообщение уже доставлено.
21h 2.9K 1ZEcyR-00075z-Mu <> *** frozen *** aaa@bbb.ru
* frozen * - сообщение заморожено, exim не будет пытаться переслать его.
Посчитать количество писем в очереди:
root@host# exim -bpс
Элементы конфигурации
Простая конфигурация exim
Подобную конфигурацию можно использовать на машинах мониторинга для отправки алармов.
Есть контроль получателей сообщений.
primary_hostname = noc.mydomain.ru #domainlist local_domains = @ : localhost : localhost.localdomain domainlist local_domains = @ : localhost #domainlist relay_to_domains = hostlist relay_from_hosts = 127.0.0.1 daemon_smtp_ports = 25 local_interfaces = 127.0.0.1 never_users = root rfc1413_hosts = * rfc1413_query_timeout = 5s ignore_bounce_errors_after = 2d timeout_frozen_after = 7d begin routers mydomain_ex_router: condition = ${lookup {$local_part@$domain} lsearch {/etc/exim4/to_exchange} {yes} {no} } driver = manualroute transport = remote_smtp route_data = 10.10.10.253 dnslookup: condition = ${lookup {$local_part@$domain} lsearch {/etc/exim4/to_inet} {yes} {no} } driver = dnslookup transport = remote_smtp ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8 no_more system_aliases: driver = redirect allow_fail allow_defer data = ${lookup{$local_part}lsearch{/etc/aliases}} # user = exim file_transport = address_file pipe_transport = address_pipe localuser: driver = accept check_local_user # local_part_suffix = +* : -* # local_part_suffix_optional transport = local_delivery cannot_route_message = Unknown user localuser: driver = accept check_local_user # local_part_suffix = +* : -* # local_part_suffix_optional transport = local_delivery cannot_route_message = Unknown user begin transports remote_smtp: driver = smtp local_delivery: driver = appendfile file = /var/mail/$local_part delivery_date_add envelope_to_add return_path_add group = mail mode = 0660 address_pipe: driver = pipe return_output address_file: driver = appendfile delivery_date_add envelope_to_add return_path_add begin retry * * F,2h,15m; G,16h,1h,1.5; F,4d,6h
Endpass
Используется при написании правил acl (c действием access) для того, что бы задать поведение exim при несовпадении условий правила.
Например, в одном из правил acl есть несколько условий:
accept domains = xxx.com endpass message = "No such user" verify = recipient
- Если письмо адресовано не домену xxx.com (условие domain), то письмо передается для дальнейшей проверки по оставшимся правилам acl.
Несовпадение условий правила acl произошло до endpass - письмо идет дальше. - Если письмо адресовано домену xxx.com, но не прошла проверка получателся (условие verify), то такое письмо дропается с сообщением “No such user”.
Несовпадение условий правила acl произошло после endpass - письмо дальше не идет. - Если письмо адресовано домену xxx.com (условие domain) и успешно прошла проверка получателя (условие verify), то такое письмо принимается и дальнейшая проверка по правилам acl прекращается.
Логи
Значение символов в логах Exim
<= message arrival (относительно самого Exim) => normal message delivery -> additional address in same delivery >> cutthrough message delivery *> delivery suppressed by -N ** delivery failed; address bounced == delivery deferred; temporary problem S= размер доставленного сообщения, пишется вместе с "=>"