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 c отправкой писем через gmail
</hidden Exim - gmail как релей>
primary_hostname = noc1 domainlist local_domains = @ : localhost 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 send_via_gmail: condition = ${lookup {$local_part@$domain} lsearch {/etc/exim/to_inet} {yes} {no} } driver = manualroute domains = ! +local_domains transport = gmail_smtp route_list = * smtp.gmail.com 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 begin transports gmail_smtp: driver = smtp port = 587 hosts_require_auth = * hosts_require_tls = * 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 authenticators gmail_login: driver = plaintext public_name = LOGIN client_send = : XXXX@gmail.com : PASSWORD6 begin retry * * F,2h,15m; G,16h,1h,1.5; F,4d,6h[root@noc1 mail]#
</hidden>
Простая конфигурация exim
Подобную конфигурацию можно использовать на машинах мониторинга для отправки алармов.
Есть контроль получателей сообщений.
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= размер доставленного сообщения, пишется вместе с "=>"