Инструменты пользователя

Инструменты сайта


exim:exim

Exim

Exim (от англ. EXperimental Internet Mailer) — это агент пересылки сообщений, используемый в операционных системах семейства Unix. Первая версия была написана в 1995 году Филиппом Гейзелом (Philip Hazel) для использования в качестве почтовой системы в Кембриджском Университете. Exim распространяется под лицензией GPL, и каждый может свободно скачать его, использовать и модифицировать. Следует отметить, что версия 4 существенно отличается от версии 3.

Exim придерживается дизайна SendMail, где один процесс контролирует всю работу MTA. Такой монолитный дизайн считается небезопасным, но у Exim прекрасная история безопасности и для версии 4.xx. крайне редки критические уязвимости.

Exim 4 спроектирован для систем, имеющих постоянное подключение к сети, поэтому в нём нет сложных механизмов работы с очередью, через которую должны проходить все сообщения. В настройке по умолчанию Exim пытается немедленно доставить сообщение. При большой нагрузке на сервере режим немедленной доставки может быть временно выключен.

http://www.exim.org/

Установка

apt-get install exim4

Для установки усиленной версии пакета с поддержкой ACL нужно использовать команду:

apt-get install exim4-daemon-heavy

Настройка

Настройка пакета после установки:

dpkg-reconfigure exim4-config

:!: Нужно выбирать Раздельная конфигурация в маленьких файлах (Split configuration into small files), это позволяет использовать такой режим настройки, при котором конфигурация разбита на отдельные файлы и папки в /etc/exim4/conf.d. При этом варианте файл update-exim4.conf.conf должен содержать строку

dc_use_split_config='true'

Такой вариант удобнее для настройки чем один большой файл.

Файлы и папки

Папка с папками и файлами настройки/etc/exim4
Файл с глобальными настройками /etc/exim4/update-exim4.conf.conf
Структура папок и файлов для настройки 1)/etc/exim4/conf.d
Файл настроек 2)exim4.conf.template
Папка для временных файлов/var/lib/exim4
Папка для протоколов/var/log/exim4

Команды

Перезагрузка (чтение новых настроек)service exim4 reload
Перезапускservice exim4 restart
Обновление настроекupdate-exim4.conf

При обновлении настроек создается файл /var/lib/exim4/config.autogenerated, он получается путем компиляции /etc/exim4/conf.d или exim4.conf.template (в зависимости от варианта настроек)

Файл ''update-exim4.conf.conf''

update-exim4.conf.conf
dc_eximconfig_configtype='internet'
dc_local_domains='domain.com'
dc_primary_hostname='server'
dc_other_hostnames='server'
dc_smarthost='server::25'
dc_relay_from_hosts='127.0.0.1'
dc_local_interfaces='0.0.0.0'
dc_readhost='*'
dc_relay_domains='*'
dc_relay_nets='*'
dc_minimaldns='true'
CFILEMODE='644'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='dovecot'
dc_virtualdelivery='dovecot'
dc_use_split_config='true'
Имя Описание Примечание
dc_smarthostАдрес SMTP сервера через который отправлять почту во внешние доменыserver::port
dc_use_split_configИспользовать конфигурацию в виде отельных файлов в /etc/exim4/conf.d dc_use_split_config='true'
relay_from_hosts
dc_eximconfig_configtypeThe main configuration type. Sets macro DC_eximconfig_configtype. The macro usually contains a shorthand for one of the choices for the “General type of mail configuration” debconf question (See README.Debian). dc_eximconfig_configtype ↔ debconf configtype mapping:internet internet site; mail is sent and received directly using SMTP, smarthost mail sent by smarthost; received via SMTP or fetchmail, satellite mail sent by smarthost; no local mail, local local delivery only; not on a network, none no configuration at this time
dc_hide_mailname Boolean option that controls whether the local mailname in the headers of outgoing mail should be hidden. (Only effective for “smarthost” and “satellite”HIDE_MAILNAME
dc_mailname_in_ohInternal use only Boolean option that is set by the maintainer scripts after adding the contents of /etc/mailname to the dc_other_hostnames list. This is a transition helper since it wouldn't other wise be possible to see whether that domain name has been removed from dc_other_hostnames on purpose. This is not used by update-exim4.conf, and no macro is set.
ue4c_keepcommentsBoolean option that controls whether update-exim4.conf strips the comments from the target configuration file (default) or leaves them in. This can be overridden by the command line options –keep comments and –removecomments. The value is not written to an exim macro.
dc_localdeliveryname of the default transport for local mail delivery. Defaults to mail_spool if unset, use maildir_home for delivery to ~/Maildir/LOCAL_DELIVERY
dc_local_interfacesList of IP addresses the Exim daemon should listen on. If this is left empty, Exim listens on all interfacesMAIN_LOCAL_INTERFACES only if there is a non-empty value
dc_minimaldns Boolean option to activate some option to minimize DNS lookups, if set to “true” a macro DC_minimaldns is defined. If true, the macro DC_minimaldns is set to 1, and the macro MAIN_HARDCODE_PRIMARY_HOSTNAME
dc_other_hostnamesis used to build the local_domains list, together with “localhost”. This is the list of domains for which this machine should consider itself the final destination. The local_domains list ends up in the macro MAIN_LOCAL_DOMAINS
dc_readhostFor “smarthost” and “satellite” it is possible to hide the local mailname in the headers of outgoing mail and replace it with this value instead, using rewriting. For “satellite” only, this value is also the host to send local mail toDCreadhost
dc_relay_domainsСписок доменов в которые можно отправлять почтуMAIN_RELAY_TO_DOMAINS
dc_relay_netsA list of machines for which we serve as smarthost. Please note that 127.0.0.1 and ::1 are always permitted to relay since /usr/lib/sendmail is available anyway and relay control doesn't make sense hereMAIN_RELAY_NETS
dc_eximconfig_configtype='internet'
dc_local_domains='domain.ru'

dc_primary_hostname='domain.ru'
dc_other_hostnames='domain.ru'

dc_smarthost='mail.domain.ru'

dc_relay_from_hosts='127.0.0.1'
dc_local_interfaces='0.0.0.0'

dc_readhost='*'
dc_relay_domains='*'
dc_relay_nets='*'


dc_minimaldns='true'

CFILEMODE='644'
dc_hide_mailname='false'
dc_mailname_in_oh='true'
dc_localdelivery='dovecot'

Тестирование

Проверка синтаксиса конфигурационного файла

exim -bV

Доступность ареса

exim -bt АДРЕС

Тестирование макросов

exim -be

Выход по Ctrl+D

Работа с Dovecot

Для работы в паре с IMAP сервером Dovecot

Папка: conf.d/transport/

01_dovecot
dovecot:
 debug_print = "T: dovecot for $local_part@$domain"
 driver = pipe
 command = /usr/lib/dovecot/dovecot-lda -f $sender_address
 message_prefix =
 message_suffix =
 log_output
 delivery_date_add
 envelope_to_add
 return_path_add
 group = mail
 user = vmail
 temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78

:!: Значение переменной home_directory должно быть согласовано переменной mail_location сервера Dovecot

Работа с LDAP

Папка:conf.d/main/

99_ldap
.ifndef LDAP_ROOT_DN
LDAP_ROOT_DN = ldap:///АДРЕС И ПУТЬ К СЕРВЕРУ LDAP
.endif

Папка: conf.d/router/

101_ldap_user
ldap_user:
  driver = redirect
  allow_fail
  allow_defer
# Поиск maildrop в полях mail объектов objectclass=mailUser
data = ${lookup ldapm {LDAP_ROOT_DN?maildrop?sub?\.
 (&(mail=${quote_ldap:$local_part@${domain}})(objectclass=mailUser))}}
 
cannot_route_message = Неизвестный пользователь (Unknown user)
 
file_transport = dovecot
102_ldap_groups
ldap_groups:
  driver = redirect
  allow_fail
  allow_defer
# Поиск членов групп objectclass=mailGroup, для каждого члена группы поиск maildrop.
data = ${sg{${map {<\n \.
 ${sg{${lookup ldapm { \.
 LDAP_ROOT_DN?member?sub?\.
 (&\.
 (objectClass=mailGroup)\.
 (mail=${quote_ldap:${local_part}@${domain}})\.
 )\.
 }}}{\N, \N}{\n}}} \.
 {${lookup ldap{ \.
 ldap:///${quote_ldapdn:$item}?maildrop?base?}} \.
 }}}{\N\n\N}{, } \.
 }
 
cannot_route_message = Неизвестный пользователь/группа (Unknown user/group)

ClamAV

ClamAV

Папка: conf.d/main/

02_exim4-config_options
av_scanner = clamd:/var/run/clamav/clamd.ctl

Папка: conf.d/acl/

40_exim4-config_check_data
acl_check_data:
  deny
     malware = *
     demime = *
     hosts = *
     message = Это письмо содержит вирус ! ($malware_name)

Пересылка копий всей почты

Папка: conf.d/router/

103_message_all_copy
message_all_copy:
    driver = redirect
    unseen
    domains = *
    data = АДРЕС

:!: Этот роутер должен быть описан в самом начале роутеров 3)

Удаление полей из заголовка сообщения

FIXME

Уведомления о доставке

report-type=disposition-notification;


1. Уведомления о доставке (Delivery Status Notification, DSN). Почтовый
клиент может позволять пользователю установить требование уведомления о
доставке сообщения в почтовый ящик получателя. В случае, если сервер,
на котором расположен почтовый ящик, поддерживает функцию генерации
таких уведомлений, то отправитель сообщения будет информирован о факте
доставки.

2. Уведомления о действиях с сообщением, которые совершил получатель
(Message Disposition Notification, MDN). Ряд почтовых клиентов
позволяют указывать необходимость уведомления отправителя о тех
действиях, которые совершил получатель сообщения. Технически это
реализуется путем помещения дополнительной информации в заголовок
сообщения (Поле "Disposition-Notification-To").


Пожалуй, самым известным типом таких уведомлений является "уведомление
о прочтении", генерируемое после отображения сообщения на экране
почтовым клиентом получателя. Кроме того, отправитель может
уведомляться о печати сообщения, об удалении без прочтения и т.п.
Конкретный состав возможных уведомлений определяется почтовым клиентом.

Уведомления генерируются клиентом получателя (в случае, если клиент
поддерживает эту функцию) при обнаружении соответствующего требования в
заголовке полученного сообщения. Наиболее развитые клиенты позволяют
выбрать режим обработки уведомлений. Обычно в качестве альтернатив
выбора используются три варианта:

    автоматическая отправка уведомлений;

    автоматическое игнорирование требований, при этом уведомления не
    отправляются;

    предоставление в каждом конкретном случае пользователю возможности
    выбора между отправкой уведомления и игнорированием требования. 

Примеры удаления полей заголовка
http://www.lissyara.su/articles/freebsd/mail/exim+exchange/

Аутентификация

FIXME

Список доступных (при компиляции) аутентификаторов средствами dovecot

exim -bV | grep Authenticators

Ссылки

1)
Раздельная конфигурация в маленьких файлах
2)
Конфигурация в одном файле
3)
Это достигается изменением имени файла
exim/exim.txt · Последние изменения: 2017-02-23 18:48 (внешнее изменение)