Настройка exim4 debian 10

Обновлено: 05.07.2024

В данной статье я рассмотрю один из самых быстрых способов настройки smtp-демона для нашего вебсервера. Если вам нужен сервер, который ещё и должен принимать почту — проходите мимо. Эта статья подойдёт для тех, кто принимает почту гуглом или яндексом (на своём домене, само собой), но не хочет дергать их SMTP серверы, чтобы слать письма.

Если необходимо настроить отправку почты с нашего сервера через почту для доменов от Яндекса.

прописываем пароль для ящика в файле /etc/exim4/passwd.client:

Если почтовый сервер яндекс ругается, что нужно заполненное поле FROM. Прописываем его в файле /etc/exim4/conf.d/rewrite/00_exim4-config_header:

Теперь вы можете отправлять письма при помощи апача (чуть позже опишу как настроить) или командой вида echo «Testing Exim» | mail -s Test vlad@debian.pro

Как ограничить список ящиков, которым можно отправлять письма с сервера

Теперь создаём необходимые нам файлы:

В файл /etc/exim4/conf.d/router/01_exim4-outgoing-filter пишем правила, которые будут применяться к исходящей почте:

Если вы всё же выбрали «Split configuration into small files: no», то эти правила нужно вписать сразу после строчки

Это правило позволит отправлять только почту с любых ящиков доменов, которые перечислены в файле /etc/exim4/allowed.domains, или ящиков, перечисленных в файле /etc/exim4/allowed.mails. Обратите внимание на «или» — если домен написан в первом файле, то во втором смысле перечислять его ящики нет смысла. А если вам нужно разрешить отправку только с одного ящика домена — то не нужно писать его в allowed.domains, нужно написать конкретный ящик в allowed.mails

Ящики и домены нужно писать целиком (без регулярок, звездочек и прочего) по одному на строчку:

Проверить можно так:

В /var/log/exim4/mainlog в ответ на это вы увидите что-то в духе:

Второе правило (check_outgoing) проверяет, что значение поля sender (он же — smtp.sender, он же — smtp.name) подходит под одно из трех правил. Первое — sender пустой (сюда входят письма, сгенерированные самим почтовым сервером — например, отлупы о недоставке писем). Второе — sender совпадает с шаблоном *@любойдоменизспискаallowed.domains. Третье — поле sender целиком (пользователь@домен) указано в allowed.mails.

Так же учитывайте, что строчка в конфиге apache2 для вхоста вида:

Само собой, такая защита обходится (достаточно начать рассылать спам от «доверенных» ящиков) — авторизации всё ещё не требуется. Но мы можем в любой момент выключить ящик до того момента, пока не разберемся, что послужило источником спама на сервере.

В файле конфигурации php поправим sendmail_path.

В Debian: /etc/php5/apache2/php.ini или /etc/php4/apache2/php.ini

< в других дистрибутивах >

Правильная настройка SPF

Если кратко, то SPF — это способ борьбы со спамом.

Мы собираемся отправлять почту с сервера, PTR IP которого не равен одной из MX-записей сервера, а так же в большинстве случаев PTR IP не равен самому нашему домену (не всегда хостеры соглашаются менять PTR). В этом случае вероятность попадания писем в спам повышается. Но есть хороший способ ее понизить: указать правильно запись SPF нашего домена.

SPF-запись — это обыкновенная запись доменной зоны, имеющая тип TXT. Узнать текущее ее значение для домена можно с помощью команды host в Linux:

IP-адрес моего сервера 93.174.6.118. Узнаем PTR:

all — нейтральная реакция на всю остальную почту; здесь можно указать -all, что будет значить, что почта, не попадающая под эти правила, — спам.
Если вы хотите отправлять почту с сервера, не попадающего под все эти правила, его можно указать по IP или домену PTR, например:

Запись указывается для вашего домена соответствующим образом, который определяет владелец DNS-сервера. Обычно сервером заведует хостер и предоставляет возможность вносить изменения в DNS-зоны через панель хостинга. Либо сам по запросу в саппорт меняет запись. В зональном файле должна появиться запись вида:

После обновления зоны host выдаст следующее:

После всей этой настройки функция mail () в PHP начнет слать почту через ваш локальный сервер на законных основаниях для антиспам-ботов. Но косяк будет в том, что в поле отправителя будет фигурировать адрес системного пользователя www-data@localdomain. Нас это не устраивает. Чтобы почта правильно слалась из mail (), необходимо использовать ее дополнительный параметр.

bool mail ( string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]] )

Именно $additional_parameters нас и интерисует. В него надо передавать реального отправителя:

Указывается отправитель слитно с параметром -f.

Теперь отправленные через mail () письма будут абсолютно адекватны (при условии, что вы указываете все нужные SMTP-заголовки, вроде “FROM:”, “TO:” и т.д.).

А если несколько сайтов с разными IP (настройка Exim для отправки писем с разных IP)?

Мы хотим использовать локальный SMTP-сервер для отправки почты со всех сайтов на сервере. Никаких проблем нет, если настроен Exim правильно (см. выше). Но проблема появляется, если разные сайты работают на разных IP. Мы не хотим в почте «палить» то, что все наши сайты живут на одном сервере. Но Exim по умолчанию шлет всю почту с основного (первого) IP сетевого интерфейса, а этот IP всем получателям в SMTP-заголовках “Received:” письма. Кроме того, там указывается и имя сервера, которые мы в случае с разными сайтами на сервере выбрали нейтральными.

Чтобы не «палить» IP сервера, нужно отсылать письмо на удаленный сервер с IP, равного A-записи домена сайта. Делается это несложно путем изменения конфига Exim. Внесем изменения в настройки транспорта SMTP Exim. Если вы выбрали монолитный конфиг, то нужно отредактировать файл:

local_interfaces = a.a.a.a : b.b.b.b : c.c.c.c : d.d.d.d
smtp_active_hostname = $lsearch>
smtp_banner = «$smtp_active_hostname ESMTP $tod_full»

Находим в файле строку “remote_smtp:” (поиск в nano — F6). Добавляем в конец этого блока:

Так же нужно создать файл в любом месте файл привязки доменов к IP (у домена может быть несколько IP, так что просто lookup-ить его не прокатит). Я выбрал для файла место: /etc/exim4/domain2ip

Туда вводим наши домены по шаблону:

Не забудьте дописать домен в файл в случае появления нового сайта.
Кстати, строку helo_data = «$sender_address_domain» можно добавить в файл даже если у вас один IP на все сайты. Тогда в команде HELLO SMTP-протокола (а, следовательно, и в заголовках писем) будет фигурировать ваш домен.

Остается проверить, чтобы все ваши настройки работали верно. Для этого просто отправим письмо с локального сервера через консоль.

Проверяем отосланное письмо в ящике получателя:

А вот текст SMTP-протокола:

P.S. Чтобы отправленная почта не попадала в спам, отправляйте письма только от имени реально существующих на серверах Gmail адресов на ваших доменах. Туда же повалятся уведомления о недоставках.

В файл /etc/exim4/conf.d/rewrite/00_exim4-config_header пишем правила,

А для затирания Received из заголовков писем с ip серверов которые коннектятся к нашему почтовику надо добавить вот эту строчку:


Exim является агентом для пересылки почты (MTA) используется на Unix-подобных операционных системах. Exim бесплатно распространяется по условиям GNU General exim-logoPublic лицензии, и он стремится быть лучший почтовой утилитой со всеми удобствами и услугами для проверки входящей электронной почты.

Exim была портирована на большинстве Unix-подобных системах, а также на Microsoft Windows с использованием эмуляции слоя Cygwin. Exim 4 настоящее время, по умолчанию, устанавливается в Debian GNU / Linux.

Сначала проверяем есть ли у нас hostname в файле:

Установка exim

Чтобы установить сервер почти exim, выполните:

Для Debian, выполните:

Настройка Exim

Для настройки (конфигурирования) выполните команду:

конфигурирование почтового сервера exim на Debian

конфигурирование почтового сервера exim на Debian

После чего нажимаем ОК. В следующем шаге, вводим доменное имя. У меня это my_home_domain:

настройка домена для exim

настройка домена для exim

вводим IP адрес который будет слушать и использовать SMTP

вводим IP адрес который будет слушать и использовать SMTP

В следующем окне указываем все домены, которые указывают на ваш сервер (через точку с запятой):

прописываем дополнительные домены

прописываем дополнительные домены

На следующих пунктах мы не заполняем поля, оставляем пустыми ( но только для 2 следующих):

домены для которых доступна релейная передача почты

домены для которых доступна релейная передача почты

машины для которых доступна релейная передача почты

машины для которых доступна релейная передача почты

нужно ли включить сокращения DNS-запросов

выбор директории для хранения почты

выбор директории для хранения почты

розделение конфигурации в exim

розделение конфигурации в exim

После чего, окно мастера установки закроется само, и выполнит перезагрузку Exim.

Протестировать можно следующим образом, выполните команду:

Добавить комментарий Отменить ответ

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Почтовый агент Exim может выполнять функции как почтового транспортного агента (англ. Mail Transfer Agent, MTA), так и агента начального приема почты (англ. Mail submission Agent, MSA.) Он может быть настроен для автономной работы (доставки почты между пользователями системы, без обращения к Internet), для обеспечения транзита почты (без поддержки локальных почтовых ящиков), для взаимодействия с вышестоящим почтовым узлом (англ. smarthost) и без такового.

Содержание

Проектом Debian поддерживаются два варианта сборки Exim:

    — собранный с поддержкой обращения к базам LDAP,SQLite,PostgreSQL и MySQL, а также (что может оказаться особенно важным для агента начального приема почты, MSA) — с поддержкой сверки с использованием SASL и SPA; — без такой поддержки.

Выбранный пакет можно установить используя APT, например:

При этом, если соответствующие данные не были внесены в систему Debconf ранее, будет инициирована процедура начальной настройки.

Предметом начальной настройки Exim в Debian являются файлы mailname(5) и /etc/exim/update-exim4.conf.conf . Эти файлы, разумеется, являются текстовыми, однако не подлежат непосредственному редактированию, поскольку могут быть перезаписаны при выполнении этапа настройки Debian-пакета (кодом exim4-config.config .) Поэтому, для их правки следует использовать средства Debconf, например:

В ходе начальной настройки будут заданы следующие вопросы.

  • почтовый узел Internet ( internet ): доставка в соответствии с DNS-записями типа MX;
  • «внутренний» почтовый узел ( smarthost ): доставка исходящей почты через вышестоящий почтовый узел;
  • только локальная доставка ( local .)

Почтовое имя системы хранится в файле mailname(5).

(список пуст — все интерфейсы системы)

::1; 127.0.0.0/8; 2001:db8:1337:cafe::/64; 192.0.2.128/25

(список пуст — все интерфейсы системы; ::1; 127.0.0.0/8 — только локальная петля)


Определяет обслуживаемые Exim сетевые интерфейсы. По-умолчанию, обслуживаются все активные (поднятые) сетевые интерфейсы системы.

Ограничивать список интерфейсов имеет смысл, главным образом, в случае использования Exim как агента начального приема почты для некоторой локальной сети, с последующей передачей почты вышестоящему почтовому узлу и получением почты извне без использования протокола SMTP (например, с помощью программы Fetchmail.) В этом случае, данный параметр будет содержать IP-адреса (и соответствующие длины сетевых префиксов) интерфейса, связывающего систему с обслуживаемой локальной сетью.

Кроме того, если обеспечение данной функции требуется лишь в пределах локальной системы, список интерфейсов можно ограничить значением ::1; 127.0.0.0/8 .

Подчеркнем, что при наличии в системе, обслуживающей локальную сеть — или доставку входящей почты через оную по протоколу SMTP — единственного (помимо локальной петли lo ) интерфейса (например, eth0 ), данный параметр является совершенно избыточным.

(список пуст — только localhost )


Определяет список доменных имен, доставка на которые выполняется в локальные почтовые ящики пользователей.

В этом списке имеет смысл упомянуть основное почтовое имя системы, ее собственное доменное имя (если отлично от основного почтового), а также все функциональные псевдонимы.

Используется только для почтовых узлов Internet (общий тип конфигурации: internet .)

Применять этот параметр имеет смысл в следующих двух случаях:

  • при организации вторичного почтового узла для доменного имени (или группы имен) — в этом случае, в DNS должна присутствовать по меньшей мере одна более приоритетная MX-запись для каждого из перечисленных доменных имен;
  • при приеме почты на почтовый шлюз, с последующим распределением по локальным почтовым узлам — для чего соответствие доменных имен и адресов локальных почтовых узлов должно быть определено файлом exim4_hubbed_hosts(5).

(список пуст — только адреса локальной петли)

(список пуст — только адреса локальной петли; для управление доступом использовать SASL, TLS, сертификаты X.509,)


Определяет список сетевых префиксов, из которых данная система будет безусловно принимать почту для последующей пересылки (иными словами — являться вышестоящим почтовым узлом, или smarthost.)

Адреса локальной петли всегда присутствуют в этом списке.

Аналогичный подход, но с использованием сертификатов X.509, можно применить и для приема почты от нижестоящих почтовых транспортных агентов (MTA.)

При исключительном использовании сверки (что рекомендуется), данный параметр следует оставить пустым.

(доменное имя вышестоящего почтового узла, если таковой используется)


Список доменных имен и адресов почтовых узлов, на которые будет отправляться исходящая почта.

Используется только если подразумевается общим типом конфигурации ( smarthost , satellite .)

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

mail_spool — доставка в файлы директории /var/mail/ в формате Unix mbox

maildir_home — доставка в поддиректории Maildir домашних директорий пользователей в формате Maildir

Основные проблемы, возникающие с этим форматом:

false — используется файл /etc/exim4/exim4.conf.template

true — используется директория /etc/exim4/conf.d/


В своей работе Exim пользуется единственным основным конфигурационным файлом. В Debian такой файл формируется программой update-exim4.conf(8) на основе, с одной стороны, ее собственных настроек ( update-exim4.conf.conf ), с другой стороны, — шаблона, в качестве которого может выступать или содержимое директории conf.d , или файл exim4.conf.template (который, в свою очередь, может быть создан из содержимого conf.d программой update-exim4.conf.template(8).)

Далее мы будем предполагать, что Exim использует конфигурационные файлы, содержащиеся в директории conf.d .

(доставка в /var/mail/mail )

(пользовательская учетная запись администратора)

В случае отказа от этой возможности, почта root будет доставляться в /var/mail/mail .

Кроме того, потребуется определить вышеупомянутые параметры в main -файле (например: /etc/exim4/conf.d/main/00_local_tls_client ), подобно:

Здесь мы предполагаем, что имена содержащих сертификат X.509 ( MAIN_TLS_CERTIFICATE ) и секретный ключ ( MAIN_TLS_PRIVATEKEY ) файлов, равно как и файла, содержащего доверенные сертификаты ( MAIN_TLS_VERIFY_CERTIFICATES ), уже определены используемой конфигурацией Exim. (По-умолчанию, код main/03_exim4-config_tlsoptions определяет их как CONFDIR/exim.crt , CONFDIR/exim.key и, если существует, /etc/ssl/certs/ca-certificates.crt , — но лишь при условии определения MAIN_TLS_ENABLE пользователем.)

Текущая версия Exim в Debian позволяет использовать TLS для входящих соединений, при наличии настроек, подобных нижеследующим, помещаемых в main -файл (например: /etc/exim4/conf.d/main/00_local_tls .)

В данном случае, мы разрешаем ( MAIN_TLS_ENABLE ) использование TLS для входящих соединений; используем ( MAIN_TLS_VERIFY_HOSTS ) содержимое файла tls_verify_hosts конфигурационной директории Exim ( CONFDIR , иными словами — /etc/exim4 ) в качестве списка систем, для которых проверка действительности сертификата является обязательной; а также запрашиваем ( MAIN_TLS_TRY_VERIFY_HOSTS ) выполнение такой проверки для всех без исключения входящих соединений.

По-умолчанию, необходимые для использования TLS закрытый ключ и сертификат X.509 будут загружены из файлов exim.key и exim.crt конфигурационной директории Exim, соответственно. Ради единообразия, можно поместить сертификат в директорию /etc/ssl/certs , подобно:

Использование директории /etc/ssl/private для размещения закрытого ключа (параметр MAIN_TLS_PRIVATEKEY ), по-видимому, лишено смысла, поскольку эта директория доступна только root , в то время как Exim будет выполняться от непривилегированного пользователя ( Debian-exim ) в момент обращения к файлу.

Однако, эта функциональность предназначена прежде всего для приема почты от почтовых пользовательских агентов (MUA.) Для сверки нижестоящих узлов можно воспользоваться следующим фрагментом кода, который целесообразно поместить сразу же после кода проверки на вхождение IP-адреса удаленной системы в список relay_from_hosts .

Список адресов relay_from_hosts_tls_mta , для соединений с которых будет выполнена такая сверка, указывается в main -файле, подобно (в данном примере доступ не ограничивается конкретными IP-адресами):

Список различительных имен (англ. distinguished name, DN) нижестоящих узлов помещается в файл relay_tls_dn конфигурационной директории Exim, и может быть подобен следующему:

Привет, давай быстро настроим отправку почты с твоего ПК/Сервера под Debian.
1. Установим необходимые пакеты прописав в терминале следующее:
apt-get update && apt-get install exim4-daemon-light mailutils

2. После установки, выполним базовую настройку набрав в консоли следующую команду:
dpkg-reconfigure exim4-config

exim-1-pikabox.com.ua

Откроется окно с выбором типа общей почтовой конфигурации. Выберите пункт “интернет-сайт” или аналогичный пункт на языке вашей системы.

После выбора, в следующем окне введите ваш домен полностью, например: mysitedomain.lo. В случае с виртуальными хостингами имя домена может быть уже заполнено, его можно не менять в таком случае. (обращайте внимание на подсказки установщика)

exim-0-pikabox.com.ua

Далее при выборе IP-адресов, которые будет слушать Exim, стоит указать только “127.0.0.1”:

exim-1-pikabox.com.ua

В следующем окне конфигуратора необходимо указать через точку с запятой все домены, которые указывают на твой сервер:

exim-2-pikabox.com.ua

На двух следующих страницах конфигуратора нужно оставить поля пустыми:

exim-3-pikabox.com.ua

exim-5-pikabox.com.ua

На шаге с выбором сокращения DNS-запросов нужно выбрать “Нет”:

exim-6-pikabox.com.ua

В следующем шаге выбираем пункт “Maildir…”, т.к. данный тип более распространён и имеет преимущества перед mbox:

exim-7-pikabox.com.ua

Далее на шаге выбора разделения конфигурации выберите “Нет”:

На крайнем шаге необходимо через пробел указать ящики, куда будет пересылаться почта для ‘root’ и ‘postmaster’. После чего, окно мастера закроется и Exim перезагрузится.

После установки почтового сервера Exim все его основные настройки хранятся в конфигурационном файле, который находится по одному из путей:

Также возможный путь к конфигурационному файлу - /etc/exim/configure

Если указанных файлов нет, то найдите exim4.conf.template/ exim.conf.template соответственно для ОС Debian/CentOS и выполните команду, которая скопирует их содержимое в файлы exim4.conf/exim.conf по указанным путям:

Изменение портов

Порты по умолчанию, которые слушает Exim, просмотрите командой

Директива netstat может быть по умолчанию не установлена на сервере, для ОС CentOS установка пакета сетевых директив выполняется командой

sudo yum install net-tools


Подтвердите размер инсталляции пакета, нажав “y” при запросе в командой строке.

После установки просмотрите список портов командой netstat.


Для изменения прослушиваемых портов откройте для редактирования конфигурационный файл Exim, для ОС CentOS выполните команду

Перечень портов определяется параметрами daemon_smtp_ports и tls_on_connect_ports.


Для начала редактирования файла в редакторе vi используйте команду i, нажмите клавишу Esc, чтобы остановить редактирование. Для выхода из редактора без сохранения изменений используйте команду :q! При этом курсор должен находиться на последней строке файла. Чтобы сохранить изменения и выйти из редактора используйте команду :wq

Перезапустите Exim, чтобы изменения вступили в силу, выполнив команду

Убедитесь, что слушаются нужные вам порты командой netstat -anp|grep exim

Изменение IP-адреса отправки почты

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

Единый IP для всех доменов

Откройте для редактирования конфигурационный файл Exim, найдите секцию transports и добавьте строку


Перезапустите Exim, чтобы изменения вступили в силу, выполнив команду

Индивидуальный IP для каждого домена

Откройте для редактирования конфигурационный файл Exim, найдите секцию transports и посмотрите указанный в строке interface = <;$


Откройте для редактирования указанный в пути файл.

Для каждого домена укажите нужный IP-адрес.

Перезапустите Exim, чтобы изменения вступили в силу, выполнив команду

Убедитесь, что изменения вступили в силу, отправив письмо на внешний ящик (ваш альтернативный e-mail) и просмотрев его заголовки.

Читайте также: