Настройка почтового сервера Exim
01 июля 2024
ID 273150
В этом разделе представлена инструкция по настройке почтового сервера на базе MTA Exim. Почтовый сервер будет предоставлять следующие возможности:
- пересылка почты для/от обслуживаемых доменов;
- проверка существующих получателей;
- использование TLS-шифрования при установке соединений;
- DKIM-подпись исходящих сообщений и проверка подписи входящих сообщений;
- отправка исходящей почты через пограничный шлюз;
- настройка времени нахождения сообщения в очереди;
- отправка скрытой копии всех сообщений на определенный адрес.
Предполагается, что почтовый сервер будет использоваться в роли пограничного почтового шлюза и будет принимать почту из сети Интернет, проверять и направлять её на внутренний почтовый сервер в DMZ, а также обеспечивать доставку почты от внутренних отправителей по обратному маршруту.
Для настройки почтового сервера вам понадобится следующая информация:
- имена обслуживаемых доменов;
- роли узлов в почтовой схеме;
- IP-адреса и имена узлов, используемых в схеме.
Настройку почтового сервера необходимо выполнять с правами учетной записи root.
Чтобы настроить почтовый сервер Exim:
- Запустите мастер настройки почтового сервера Exim с помощью команды:
dpkg-reconfigure exim4-config
Далее мастер настройки по шагам запрашивает информацию для настройки почтового сервера.
- Для параметра General type of mail configuration выберите значение
internet site
. - Для параметра System mail name укажите полное доменное имя (FQDN) сервера, например
klms-10.home.lab
. Это значение будет далее использоваться в командах в качестве примера. - Для параметра IP-addresses to listen on for incoming SMTP connections укажите значение
0.0.0.0
. - Для параметра Other destinations for which mail is accepted значение оставьте пустым. Если значение уже указано, удалите его.
- Для параметра Domains to relay mail for укажите перечень почтовых доменов организации, разделенных точкой с запятой.
Для этих доменов почта будет приниматься извне и пересылаться на внутренние почтовые серверы.
- Для параметра Machines to relay mail for укажите перечень доверенных локальных сетей в формате <
сеть>/<префикс>
. В качестве разделителя используйте точку с запятой.С доверенных локальных сетей почтовый шлюз будет принимать почту для доставки на внешние почтовые домены.
- Для параметра Keep number of DNS-queries minimal выберите значение
No
. - Для параметра Delivery method for local mail выберите значение
Maildir format in /var/mail
. - Для параметра Split configuration into small files выберите значение
No
.Указанные параметры почтового сервера Exim будут записаны в файлы /etc/mailname и /etc/exim4/update-exim4.conf.conf.
- Выполните дополнительную настройку веб-сервера Exim. Для этого создайте файл /etc/exim4/exim4.conf.localmacros следующего содержания:
#BASIC MTA SETTINGS
primary_hostname=<имя домена или хоста>
#Ограничение размера сообщений
MESSAGE_SIZE_LIMIT=300M
#Отключение IPv6
disable_ipv6=true
#ADVANCED MTA SETTINGS
#Изменение SMTP-приветствия
smtp_banner = $smtp_active_hostname ESMTP MTA
#Maximum simultaneous connection attempts
smtp_accept_max_per_host=50
#Maximum SMTP session length
smtp_receive_timeout=30s
smtp_accept_max=256
smtp_accept_queue_per_connection=100
#TLS SETTINGS
#Включение TLS-шифрования
MAIN_TLS_ENABLE=yes
tls_require_ciphers = "SECURE192:+SECURE256:-VERS-ALL:+VERS-TLS1.2:+VERS-TLS1.3"
- Сохраните изменения в файле.
- Укажите маршрут к локальным доменам. Для этого создайте файл /etc/exim4/hubbed_hosts. Файл предназначен для хранения списка записей, которые используются для переопределения адреса доставки или дополнения информации MX-записей из DNS.
Файл должен содержать пары "ключ-значение" шаблона домена и данные маршрута в следующем формате:
domain: host-list options
. Например:home.lab: exchange.home.lab
.Список поддерживает следующие виды записей:
- Для переопределения маршрута:
dict.ref.example: mail-1.ref.example:mail-2.ref.example
- Для поиска по доменному имени из MX записи (необходимо наличие А-записи в DNS зоне):
foo.example: internal.mail.example.com
- Для поиска по IP-адресу:
bar.example: 192.168.183.3
- Для переопределения маршрута:
- Сохраните изменения в файле.
- Для использования TLS-шифрования при установке соединений с хостами сгенерируйте самоподписанный сертификат с помощью команды:
/usr/share/doc/exim4-base/examples/exim-gencert
В директории /etc/exim4/ появятся файлы exim.crt и exim.key.
Пример:
Country Code (2 letters) [US]:RU
State or Province Name (full name) []:Moscow
Locality Name (eg, city) []:Moscow
Organization Name (eg, company; recommended) []:Home.lab
Organizational Unit Name (eg, section) []:IT
Server name (eg. ssl.domain.tld; required!!!) []:klms-10.home.lab
Email Address []:administrator@home.lab
- Настройте DKIM-подпись. Для этого выполните следующие действия:
- Создайте директорию, в которой будет храниться приватный ключ, с помощью команды:
mkdir /etc/exim4/dkim
- Перейдите в папку /etc/exim4/dkim и сгенерируйте приватный ключ
<
имя домена
>.key
с помощью команд:cd /etc/exim4/dkim
openssl genrsa -out home.lab.key 2048
- Из полученного приватного ключа сгенерируйте публичный ключ, который будет использоваться в TXT-записи DNS:
openssl rsa -pubout -in home.lab.key -out home.lab.pub
- Сделайте пользователя Debian-exim, от имени которого запускается Exim, владельцем директории /etc/exim4/dkim и всех файлов внутри:
chown -R Debian-exim:Debian-exim /etc/exim4/dkim
- Измените параметры Exim, чтобы использовать созданный приватный ключ. Для этого откройте файл /etc/exim4/exim4.conf.localmacros и добавьте следующие строки:
DKIM_CANON = relaxed
DKIM_DOMAIN = ${lc:$sender_address_domain}
DKIM_PRIVATE_KEY = ${if exists{CONFDIR/dkim/${lc:$sender_address_domain}.key} {CONFDIR/dkim/$sender_address_domain.key} {0}}
DKIM_SELECTOR = email
- Сохраните изменения в файле и перезапустите Exim с помощью команды:
service exim4 restart
- Вы можете проверить конфигурацию с помощью следующей команды:
exim -bP transports | grep dkim
- Создайте в DNS-зоне домена запись типа TXT и укажите в записи публичный ключ в соответствующем формате. Для этого выполните следующие действия:
- В поле Имя укажите значение
email._domainkey.home.lab
, гдеemail
–
это значение параметра DKIM_SELECTOR из пункта 16e. - В поле записи укажите следующую строку:
v=<
версия DKIM
>; h=<
хеш-алгоритм sha1 или sha256
>; k=<
тип публичного ключа
>; p=<
содержимое публичного ключа /etc/exim4/dkim/home.lab.pub
>
Пример:
sel1._domainkey.test.example.com. IN TXT ( "v=DKIM1; k=rsa; s=email; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArqGgYtLwpVAFRDf+YfRK0aB5Qbne2xMAEye/aH4fLf7cOuOcWz/x5f33uxSpL8YwPgEXPoFogKWTFCqMUUBreHx1mbfgBn+uGYvlxJEXyFFmiMKHO0yTJntPrWxsCnF10ZSf5lBL/olqmgCTgkpBG11PcvCJq0bdEyWQ50avMCfg3zoean8CsiJUb91TWIy08T8HoW0huyQ3"
"W82jMhAYvO8FMgI1rbwaH7z3tlQxnGqc49+lRpz7T+p1Tl6Bs2iU8h2m1mIupIsNHF4Q+UtGNl9jaajhyz+NMmjLVTlaZvpbS3xODSBnZdpAXywUa4hfQsto1cHSAwEWsk90IQ/HHwIDAQAB" )
- Если нужно использовать более одного домена, вы можете добавить необходимые приватные DKIM-ключи для каждого домена в папку /etc/exim4/dkim (например, example.com.key, где example.com – имя домена).
Вы также можете перенести приватные DKIM-ключи доменов из Kaspersky Secure Mail Gateway 2.0 в папку /etc/exim4/dkim. Однако этот способ повышает риск утечки приватных ключей; подразумевается, что администратор берет ответственность на себя.
- В поле Имя укажите значение
- Создайте директорию, в которой будет храниться приватный ключ, с помощью команды:
- Если в Kaspersky Secure Mail Gateway в основных настройках MTA был выбран режим Отправлять через пограничный шлюз, вы можете настроить отправку почты через определенный хост. Для этого внесите следующие изменения в файл /etc/exim4/exim4.conf.template:
- В секции begin routers укажите:
home:
driver = dnslookup
domains = nonhome.lab
transport = remote_smtp_home
no_more
- В секции begin transports укажите:
remote_smtp_home:
driver = smtp
- Если используется альтернативный порт, укажите дополнительно строку:
port = 2525
- В секции begin routers укажите:
- Сохраните изменения в файле.
- Настройте время нахождения сообщения в очереди. Для этого в файле /etc/exim4/exim4.conf.template в секции begin retry укажите:
* * F,2h,15m; G,16h,1h,1.5; F,
15d,6h
где
15d
– 15 дней. - Сохраните изменения в файле.
- Настройте отклонение входящих соединений, в RCPT которых указаны несуществующие домены (аналогично настройке Отклонять сообщения на неизвестные домены в Kaspersky Secure Mail Gateway). Для этого в файле /etc/exim4/exim4.conf.template в секции
main
после строкиacl_check_rcpt
вставьте следующие строки:deny
hosts = !+relay_from_hosts
condition = ${lookup dnsdb{ptr=$sender_host_address}{false}{true}}
- Сохраните изменения в файле.
- Настройте отправку скрытой копии всех сообщений с определенных адресов (BCC). Для этого выполните следующие действия:
- Внесите следующие изменения в файл /etc/exim4/exim4.conf.template:
В секции main укажите:
system_filter = /etc/exim4/exim.filter
system_filter_pipe_transport = filter_pipe
В секции transports укажите:
filter_pipe:
driver = pipe
return_fail_output
- Создайте файл /etc/exim4/exim.filter и укажите в нем адреса отправителей и получателей, для чьих сообщений следует отправлять скрытые копии.
if
$sender_address contains "<
адрес или маска адреса электронной почты
>" and $recipients contains "<
адрес или маска адреса электронной почты
>"
then
unseen deliver
<адрес электронной почты для получения скрытых копий сообщений
>
endif
- Внесите следующие изменения в файл /etc/exim4/exim4.conf.template:
- Для применения новых параметров обновите конфигурационный файл Exim и перезапустите службу Exim с помощью команд:
update-exim4.conf
systemctl restart exim4
Почтовый сервер Exim будет настроен.
Если вам нужно изменить основные параметры MTA, вы можете снова запустить мастер настройки почтового сервера и выполнить шаги инструкции выше.