Настройка Exim на FreeBSD: различия между версиями

Материал из Bas Wiki
Перейти к навигации Перейти к поиску
 
(не показано 18 промежуточных версий этого же участника)
Строка 100: Строка 100:
</pre>
</pre>


===== Настройка SPF =====
==== Настройка DKIM ====
Добавляем в DNS-зону нашего домена информацию о том, с какого сервера будет отправляться почта и что делать с почтой с других адресов.<br>
Подробнее о синтаксисе SPF можно прочитать на [https://yandex.ru/support/business/domains/dns/spf.html Яндексе] или [https://support.google.com/a/answer/10683907?hl=ru Google]
<pre>
gwtools.ru    TXT    "v=spf1 ip4:1.2.3.4 ~all"
</pre>
 
===== Настройка DKIM =====
Переходим в папке с конфигами Exim:
Переходим в папке с конфигами Exim:
<pre>
<pre>
Строка 113: Строка 106:
</pre>
</pre>


Генерируем приватный ключ:
===== Приватный ключ =====
<pre>
<pre>
openssl genrsa -out gwtools.ru.private 1024
openssl genrsa -out gwtools.ru.private 1024
</pre>
</pre>


Генерируем публичный ключ на основе приватного:
===== Публичный ключ =====
Публичный ключ генерируется на основе приватного и добавляется в DNS-запись и поэтому потребуется нам немного позже.
<pre>
<pre>
openssl rsa -in gwtools.ru.private -pubout > gwtools.ru.public
openssl rsa -in gwtools.ru.private -pubout > gwtools.ru.public
</pre>
</pre>


Добавляем в DNS-зону нашего домена информацию о публичном ключе:
==== Настройка DNS ====
===== MX =====
Для того, чтобы сервера знали, куда отправлять почту для домена, нужно добавить MX-запись.<br>
'''Важно!''' Я рекомендую добавлять запись на почтовый сервер именно как A-запись, а не CNAME (так же, как и для NS-записей):
<pre>
gwtools.ru    MX    10 mx1.gwtools.ru
mx1          A    1.2.3.4
</pre>
 
===== SPF =====
Добавляем в DNS-зону нашего домена информацию о том, с какого сервера будет отправляться почта и что делать с почтой с других адресов.<br>
Подробнее о синтаксисе SPF можно прочитать на [https://yandex.ru/support/business/domains/dns/spf.html Яндексе] или [https://support.google.com/a/answer/10683907?hl=ru Google]
<pre>
gwtools.ru    TXT    "v=spf1 ip4:1.2.3.4 ~all"
</pre>
 
===== DKIM =====
Добавляем в DNS-зону нашего домена информацию о публичном ключе, который мы сгенерировали ранее:
<pre>
<pre>
mx1    TXT    "v=DKIM1; k=rsa; t=s; p=ABC...XYZ"
mx1    TXT    "v=DKIM1; k=rsa; t=s; p=ABC...XYZ"
</pre>
</pre>


===== В конфиге =====
===== ADSP =====
 
===== Настройка ADSP =====
ADSP (Author Domain Signing Practices, http://tools.ietf.org/search/rfc5617 ) — практики использования DKIM в домене.<br>
ADSP (Author Domain Signing Practices, http://tools.ietf.org/search/rfc5617 ) — практики использования DKIM в домене.<br>
ADSP это опциональное расширение DKIM, которое позволяет сообщать почтовым серверам-получателям, что делать с письмом пришедшим с якобы нашего домена, но не имеющее подписи.<br>
ADSP это опциональное расширение DKIM, которое позволяет сообщать почтовым серверам-получателям, что делать с письмом пришедшим с якобы нашего домена, но не имеющее подписи.<br>
Строка 137: Строка 146:
</pre>
</pre>


===== Настройка DMARC =====
===== DMARC =====
Если кратко, то это следующий уровень политик по обработке почты, который базируется на SPF и DKIM. В зависимости от результатов проверки письмо можно пропустить, отправить в карантин или отклонить.<br>
Подробнее можно прочитать на оф. сайте https://dmarc.org/overview/ или в [https://support.google.com/a/answer/2466563?hl=ru Google].<br>
Добавляем в DNS-зону нашего домена информацию о правилах DMARC:
<pre>
_dmarc    TXT    "v=DMARC1; p=reject; pct=100; sp=reject; aspf=s; adkim=s; fo=1; ri=86400"
</pre>


==== Использование SSL/TLS шифрования при подключении ====
===== Получение сертификатов =====
===== Получение сертификатов =====


===== Настройка сертификатов =====
===== Настройка сертификатов =====


===== Отправка тестового письма с консоли =====
==== Отправка тестового письма с консоли ====
Воспользуемся telnet c почтового сервера:
Воспользуемся telnet c почтового сервера:
<pre>
<pre>
Строка 159: Строка 175:
[[Category:Exim]]
[[Category:Exim]]
[[Category:Mail]]
[[Category:Mail]]
[[Category:SPF]]
[[Category:DKIM]]
[[Category:DMARC]]
[[Category:Let's Encrypt]]

Текущая версия от 17:02, 1 июля 2023

Дано: FreeBSD 13, Exim 4. Задача: развернуть почтовый relay, с поддержкой шифрования.


Исторически во FreeBSD используется sendmail. Он отлично выполняет свои функции, но в современном мире сложен в настройке, т.к. конфиг представляет собой набор сложночитаемых макросов.

Установка exim

Воспользуемся пакетным менеджером:

pkg install exim

После установки будет показана страница с дальнейшими шагами, которые надо выполнить.
Если вы закрыли консоль, то найти эту информацию можно в файле /usr/local/share/doc/exim/POST-INSTALL-NOTES

mailer.conf

Необходимо поменять sendmail на exim в файле /etc/mail/mailer.conf.
Информацию для данного файла можно взять с оф. документации в пункте 20. Replacing another MTA with Exim:

sendmail	/usr/exim/bin/exim
send-mail	/usr/exim/bin/exim
mailq		/usr/exim/bin/exim -bp
newaliases	/usr/bin/true

Так же эту информацию можно взять из man 5 mailer.conf:

sendmail	/usr/local/sbin/exim
mailq		/usr/local/sbin/exim -bp
newaliases	/usr/bin/true
rmail		/usr/local/sbin/exim -i -oee

В результате я сделал общие изменения в таком виде:

sendmail	/usr/local/sbin/exim
send-mail	/usr/local/sbin/exim
mailq		/usr/local/sbin/exim -bp
newaliases	/usr/bin/true
rmail		/usr/local/sbin/exim -i -oee
Выключение sendmail

В /etc/rc.conf добавляем строку sendmail_enable="NONE"

Выключение заданий из расписания

Теперь нужно выключить скрипты, которые выполняются по расписанию.
Важно! По умолчанию файла /etc/periodic.conf в системе нет.
Создаём его и добавляем следующее содержимое (всё из той же информации после установки):

daily_clean_hoststat_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"
daily_queuerun_enable="NO"
Включение exim

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

echo 'exim_enable="YES"' > /etc/rc.conf.d/exim
Ротация логов

Создаём файл /etc/newsyslog.conf.d/exim.conf:

/var/log/exim/mainlog   mailnull:mail 640 7 * @T00 ZN
/var/log/exim/rejectlog mailnull:mail 640 7 * @T00 ZN
Настройка конфига

Открываем /usr/local/etc/exim/configure.
Для старта необходимо не так уж и много правок.

# primary_hostname = 

По умолчанию опция закомментирована и информация берется из системы, но я бы рекомендовал активировать эту опцию.
Указываем адрес сервера полностью, с доменом. Если сервер работает и на локальную сеть, и на интернет, то указываем существующий и доступный домен для интернета:

primary_hostname = mx1.gwtools.ru
domainlist local_domains = @
domainlist relay_to_domains =
hostlist   relay_from_hosts = localhost

Указываем адреса и домены с доступом к почте. Разделителем является двоеточие.
Список local_domains содержит список обслуживаемых этим сервером доменов.
Список relay_to_domains содержит список доменов, на которые можно отправлять почту без авторизации (проверка по получателю, например, на др. почтовый сервер).
Список relay_from_hosts содержит список адресов или доменов, с которых разрешён доступ на отправку почты через данный сервер (например, локальная сеть).

domainlist local_domains = gwtools.ru
domainlist relay_to_domains =
hostlist   relay_from_hosts = localhost : 192.168.0.0/24
Запуск exim

Данных изменений достаточно, чтобы запустить Exim и он мог получать и отправлять почту:

service exim start

Настройка DKIM

Переходим в папке с конфигами Exim:

cd /usr/local/etc/exim
Приватный ключ
openssl genrsa -out gwtools.ru.private 1024
Публичный ключ

Публичный ключ генерируется на основе приватного и добавляется в DNS-запись и поэтому потребуется нам немного позже.

openssl rsa -in gwtools.ru.private -pubout > gwtools.ru.public

Настройка DNS

MX

Для того, чтобы сервера знали, куда отправлять почту для домена, нужно добавить MX-запись.
Важно! Я рекомендую добавлять запись на почтовый сервер именно как A-запись, а не CNAME (так же, как и для NS-записей):

gwtools.ru    MX    10 mx1.gwtools.ru
mx1           A     1.2.3.4
SPF

Добавляем в DNS-зону нашего домена информацию о том, с какого сервера будет отправляться почта и что делать с почтой с других адресов.
Подробнее о синтаксисе SPF можно прочитать на Яндексе или Google

gwtools.ru    TXT    "v=spf1 ip4:1.2.3.4 ~all"
DKIM

Добавляем в DNS-зону нашего домена информацию о публичном ключе, который мы сгенерировали ранее:

mx1    TXT    "v=DKIM1; k=rsa; t=s; p=ABC...XYZ"
ADSP

ADSP (Author Domain Signing Practices, http://tools.ietf.org/search/rfc5617 ) — практики использования DKIM в домене.
ADSP это опциональное расширение DKIM, которое позволяет сообщать почтовым серверам-получателям, что делать с письмом пришедшим с якобы нашего домена, но не имеющее подписи.

_adsp    TXT    "dkim=all"
DMARC

Если кратко, то это следующий уровень политик по обработке почты, который базируется на SPF и DKIM. В зависимости от результатов проверки письмо можно пропустить, отправить в карантин или отклонить.
Подробнее можно прочитать на оф. сайте https://dmarc.org/overview/ или в Google.
Добавляем в DNS-зону нашего домена информацию о правилах DMARC:

_dmarc    TXT    "v=DMARC1; p=reject; pct=100; sp=reject; aspf=s; adkim=s; fo=1; ri=86400"

Использование SSL/TLS шифрования при подключении

Получение сертификатов
Настройка сертификатов

Отправка тестового письма с консоли

Воспользуемся telnet c почтового сервера:

telnet localhost 25
HELO localhost
MAIL FROM:user@gwtools.ru
RCPT TO:user@ya.ru
DATA
SUBJECT:test subj
test msg
.