Код: Выделить всё
# Вводим данные для подключения к MySQL серверу.
# словечко `hide`, вначале, означает, что при
# вызове проверки конфига командой
# exim -bV config_file эти данные не будут отображаться.
# Если без него - то будут показаны... Формат записи:
# хост/имя_бд/пользователь/пароль
hide mysql_servers = localhost::(/tmp/mysql.sock)/mail/exim/8975f9i7vioyuhg
# Интерфейсы, которые слушаем
local_interfaces = MY_IP
# Имя хоста. Используется в EHLO.
# Фигурирует в других пунктах, если они не заданы, типа qualify_domain и прочих..
# Если тут ничего не установлено (строка закомментирована), то используется то, что вернёт функция uname()
primary_hostname = jared.kiev.ua
# Запросы для выборки информации по доменам
VIRTUAL_DOMAINS = SELECT DISTINCT domain FROM domains WHERE type = 'local' AND enabled = '1' AND domain = '${quote_mysql:$domain}'
RELAY_DOMAINS = SELECT DISTINCT domain FROM domains WHERE type = 'relay' AND domain = '${quote_mysql:$domain}'
ALIAS_DOMAINS = SELECT DISTINCT alias FROM domainalias WHERE alias = '${quote_mysql:$domain}'
# Делаем список локальных доменов. Далее этот список будет фигурировать в виде +local_domains
# В данном случае домены выбираются из БД MySQL. Также можно их просто перечислить через двоеточие.
domainlist local_domains = @ : ${lookup mysql{VIRTUAL_DOMAINS}} : ${lookup mysql{ALIAS_DOMAINS}}
domainlist relay_to_domains = ${lookup mysql{RELAY_DOMAINS}}
# Список доверенных сетей, откуда почта будет ходить без ряда проверок
hostlist relay_from_hosts = localhost : MY_IP : 192.168.100.0/20 : 192.168.80.0/24
# Вводим названия acl`ов для проверки почты.
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_content
acl_smtp_helo = acl_check_helo
# Если в настройках сказано проверять почту на вирусы - подключаем
.ifdef USE_AV
av_scanner = clamd:/var/run/clamav/clamd.sock
.endif
# Если в настройках сказано проверять почту на спам - подключаем
.ifdef USE_SPAMD
spamd_address = /var/run/spamd.sock
.endif
# Если в настройках сказано работать с поддержкой SSL - подключаем
.ifdef TLS
# SSL/TLS cert and key
tls_certificate = /etc/ssl/certs/mail.pem
tls_privatekey = /etc/ssl/certs/mail.pem
# Advertise TLS to anyone
tls_advertise_hosts = *
tls_on_connect_ports=465
.endif
# Имя домена добавляемое для локальных отправителей (реальных
# юзеров системы) т.е. почта отправляемая от root, будет от
# root@домен_указанный_здесь. Если пункт не задан, то используется
# имя хоста из `primary_hostname`.
qualify_domain = jared.kiev.ua
# Имя хоста для ситуации, обратной предыдущей, - это имя домена, добавляемое к почте для
# системных юзеров, ну и вообще для почты, пришедшей на адрес типа `root` etc...
# Если этоn пункт не задан то используется значение полученное из предыдущего пункта - `qualify_domain`
qualify_recipient = jared.kiev.ua
# A это как раз кусок вышеописанного анахронизма - про почту в
# виде user@[222.222.222.222] - принимать её или нет. По дефолту
# (когда строка закомментирована) значение - false. Если захотите
# поставить true то надо будет добавить в список доменов
# комбинацию @[] - она означает `все локальные адреса`
allow_domain_literals = false
# запрещаем работу доставки под юзером root - в целях безопасности
never_users = root
# Проверяем соответствие прямой и обратной зон для всех хостов.
# Тока зачем это нужно - даже и незнаю... Спам на этом не режется.
# Зато возможны проблемы - если сервер зоны скажет `сервер файлед`
# то почту от этого хоста Вы не получите :)
#host_lookup = *
# По дефолту, экзим отфутболивает все `неквалифицированные` адреса,
# состоящие тока из локальной части. Для того чтобы разрешить такие письма
# определённых хостов используются эти директивы:
# для `неквалифицированных` отправителей
#sender_unqualified_hosts = +relay_from_hosts
# для `неквалифицированных` получателей
#recipient_unqualified_hosts = +relay_from_hosts
# Если сообщение было не доставлено, то генерится соощение
# об ошибке. Если сообщение об ошибке не удалось доставить
# то оно замораживается на указанный в этом пункте срок,
# после чего снова попытка доставить его. При очередной
# неудаче - сообщение удаляется.
ignore_bounce_errors_after = 1d
# Замороженные сообщения, находящиеся в очереди, дольше
# указанного времени удаляются и генерится сообщение
# об ошибке (при условии, что это не было недоставленное
# сообщение об ошибке :) )
timeout_frozen_after = 7d
# список адресов, через запятую, на которые засылаются
# сообщения о замороженных сообщениях (о замороженых
# уведомлениях о заморозке, сообщения не генерятся. - я
# надеюсь эта строка понятна :) )
#freeze_tell = noc@jared.kiev.ua
# Через какое время повторять попытку доставки
# замороженного сообщения
auto_thaw = 1h
# Приветствие сервера
smtp_banner = "$primary_hostname, ESMTP EXIM $version_number"
# Максимальное число одновременных подключений по
# SMTP. Рассчитывать надо исходя из нагрузки на сервер
smtp_accept_max = 500
# максимальное число сообщений принимаемое за одно соединение
# от удалённого сервера (или пользователя).
smtp_accept_max_per_connection = 25
# максимальное число коннектов с одного хоста
smtp_accept_max_per_host = 20
# Если у сообщения много адресатов на удалённых хостах,
# то запускатеся до указанного числа максимально число
# параллельных процессов доставки
remote_max_parallel = 15
# при генерации сообщения об ошибке прикладывать
# не всё сообщение, а кусок (от начала) указанного
# размера (иногда полезно и целиком - в таком случае
# просто закомментируйте эту строку)
return_size_limit = 70k
# разрешаем неположенные символы в HELO (столкнулся
# с этим случайно - имя фирмы состояло из двух слов
# и какой-то раздолбай домен обозвал my_firme_name
# прям с подчёркиваниями... Виндовые клиенты при
# соединении радостно рапортовали о себе
# `vasya.my_firme_name` ну а экзим их футболил :) )
helo_allow_chars = _
# Принудительная синхронизация. Если отправитель
# торопится подавать команды, не дождавшись ответа,
# то он посылается далеко и надолго :) Немного,
# спам режется.
smtp_enforce_sync = true