====== 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''| |Структура папок и файлов для настройки ((Раздельная конфигурация в маленьких файлах))|''/etc/exim4/conf.d''| |Файл настроек ((Конфигурация в одном файле))|''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'' ===== 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_configtype''|The 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_oh''|Internal 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_keepcomments''|Boolean 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_localdelivery''|name 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_interfaces''|List of IP addresses the Exim daemon should listen on. If this is left empty, Exim listens on all interfaces|MAIN_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_hostnames''|is 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_readhost''|For “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 to|DCreadhost| |''dc_relay_domains''|Список доменов в которые можно отправлять почту|MAIN_RELAY_TO_DOMAINS| |''dc_relay_nets''|A 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 here|MAIN_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:dovecot|Dovecot]] Папка: **''conf.d/transport/''** 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:dovecot|Dovecot]] ====== Работа с LDAP ====== Папка:**''conf.d/main/''** .ifndef LDAP_ROOT_DN LDAP_ROOT_DN = ldap:///АДРЕС И ПУТЬ К СЕРВЕРУ LDAP .endif Папка: **''conf.d/router/''** 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 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:clamav|ClamAV]] Папка: **''conf.d/main/''** av_scanner = clamd:/var/run/clamav/clamd.ctl Папка: **''conf.d/acl/''** acl_check_data: deny malware = * demime = * hosts = * message = Это письмо содержит вирус ! ($malware_name) ====== Пересылка копий всей почты ====== Папка: **''conf.d/router/''** message_all_copy: driver = redirect unseen domains = * data = АДРЕС :!: Этот роутер должен быть описан в самом начале роутеров ((Это достигается изменением имени файла)) ====== Удаление полей из заголовка сообщения ====== 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 ====== Ссылки ====== [[http://www.lissyara.su/doc/exim/4.70/|Specification of the Exim Mail Transfer Agent ver. 4.70 russian]] [[http://wiki.debian.org/Exim|Split configuration into small files]] [[http://habrahabr.ru/post/154281/|Миграция с MDaemon на Exim+Dovecot]] [[http://documentation.fusiondirectory.org/en/documentation_howto/exim4_base_mail_method|Exim4 and base mail method]] [[http://documentation.fusiondirectory.org/en/documentation_howto/alternative_email_addresses|Exim4+Dovecot2 and alternative email mailbox]] [[http://wiki.lissyara.su/wiki/Аутентификация_средствами_dovecot|Аутентификация средствами dovecot]] {{tag>Linux Email SMTP}}