Настройка почтового сервера Exim

В этом разделе представлена инструкция по настройке почтового сервера на базе MTA Exim. Почтовый сервер будет предоставлять следующие возможности:

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

Для настройки почтового сервера вам понадобится следующая информация:

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

Чтобы настроить почтовый сервер Exim:

  1. Запустите мастер настройки почтового сервера Exim с помощью команды:

    dpkg-reconfigure exim4-config

    Далее мастер настройки по шагам запрашивает информацию для настройки почтового сервера.

  2. Для параметра General type of mail configuration выберите значение internet site.
  3. Для параметра System mail name укажите полное доменное имя (FQDN) сервера, например klms-10.home.lab. Это значение будет далее использоваться в командах в качестве примера.
  4. Для параметра IP-addresses to listen on for incoming SMTP connections укажите значение 0.0.0.0.
  5. Для параметра Other destinations for which mail is accepted значение оставьте пустым. Если значение уже указано, удалите его.
  6. Для параметра Domains to relay mail for укажите перечень почтовых доменов организации, разделенных точкой с запятой.

    Для этих доменов почта будет приниматься извне и пересылаться на внутренние почтовые серверы.

  7. Для параметра Machines to relay mail for укажите перечень доверенных локальных сетей в формате <сеть>/<префикс>. В качестве разделителя используйте точку с запятой.

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

  8. Для параметра Keep number of DNS-queries minimal выберите значение No.
  9. Для параметра Delivery method for local mail выберите значение Maildir format in /var/mail.
  10. Для параметра Split configuration into small files выберите значение No.

    Указанные параметры почтового сервера Exim будут записаны в файлы /etc/mailname и /etc/exim4/update-exim4.conf.conf.

  11. Выполните дополнительную настройку веб-сервера 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"

  12. Сохраните изменения в файле.
  13. Укажите маршрут к локальным доменам. Для этого создайте файл /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

  14. Сохраните изменения в файле.
  15. Для использования 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

  16. Настройте DKIM-подпись. Для этого выполните следующие действия:
    1. Создайте директорию, в которой будет храниться приватный ключ, с помощью команды:

      mkdir /etc/exim4/dkim

    2. Перейдите в папку /etc/exim4/dkim и сгенерируйте приватный ключ <имя домена>.key с помощью команд:

      cd /etc/exim4/dkim

      openssl genrsa -out home.lab.key 2048

    3. Из полученного приватного ключа сгенерируйте публичный ключ, который будет использоваться в TXT-записи DNS:

      openssl rsa -pubout -in home.lab.key -out home.lab.pub

    4. Сделайте пользователя Debian-exim, от имени которого запускается Exim, владельцем директории /etc/exim4/dkim и всех файлов внутри:

      chown -R Debian-exim:Debian-exim /etc/exim4/dkim

    5. Измените параметры 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

    6. Сохраните изменения в файле и перезапустите Exim с помощью команды:

      service exim4 restart

    7. Вы можете проверить конфигурацию с помощью следующей команды:

      exim -bP transports | grep dkim

    8. Создайте в DNS-зоне домена запись типа TXT и укажите в записи публичный ключ в соответствующем формате. Для этого выполните следующие действия:
      1. В поле Имя укажите значение email._domainkey.home.lab, где email  это значение параметра DKIM_SELECTOR из пункта 16e.
      2. В поле записи укажите следующую строку:

        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" )

      3. Если нужно использовать более одного домена, вы можете добавить необходимые приватные DKIM-ключи для каждого домена в папку /etc/exim4/dkim (например, example.com.key, где example.com – имя домена).

        Вы также можете перенести приватные DKIM-ключи доменов из Kaspersky Secure Mail Gateway 2.0 в папку /etc/exim4/dkim. Однако этот способ повышает риск утечки приватных ключей; подразумевается, что администратор берет ответственность на себя.

  17. Если в Kaspersky Secure Mail Gateway в основных настройках MTA был выбран режим Отправлять через пограничный шлюз, вы можете настроить отправку почты через определенный хост. Для этого внесите следующие изменения в файл /etc/exim4/exim4.conf.template:
    1. В секции begin routers укажите:

      home:

      driver = dnslookup

      domains = nonhome.lab

      transport = remote_smtp_home

      no_more

    2. В секции begin transports укажите:

      remote_smtp_home:

      driver = smtp

    3. Если используется альтернативный порт, укажите дополнительно строку:

      port = 2525

  18. Сохраните изменения в файле.
  19. Настройте время нахождения сообщения в очереди. Для этого в файле /etc/exim4/exim4.conf.template в секции begin retry укажите:

    * * F,2h,15m; G,16h,1h,1.5; F,15d,6h

    где 15d – 15 дней.

  20. Сохраните изменения в файле.
  21. Настройте отклонение входящих соединений, в 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}}

  22. Сохраните изменения в файле.
  23. Настройте отправку скрытой копии всех сообщений с определенных адресов (BCC). Для этого выполните следующие действия:
    1. Внесите следующие изменения в файл /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

    2. Создайте файл /etc/exim4/exim.filter и укажите в нем адреса отправителей и получателей, для чьих сообщений следует отправлять скрытые копии.

      if

      $sender_address contains "<адрес или маска адреса электронной почты>" and $recipients contains "<адрес или маска адреса электронной почты>"

      then

      unseen deliver <адрес электронной почты для получения скрытых копий сообщений>

      endif

  24. Для применения новых параметров обновите конфигурационный файл Exim и перезапустите службу Exim с помощью команд:

    update-exim4.conf

    systemctl restart exim4

Почтовый сервер Exim будет настроен.

Если вам нужно изменить основные параметры MTA, вы можете снова запустить мастер настройки почтового сервера и выполнить шаги инструкции выше.

В начало