Настройка Exim на FreeBSD: различия между версиями
Bas (обсуждение | вклад) Нет описания правки |
Bas (обсуждение | вклад) |
||
(не показано 38 промежуточных версий этого же участника) | |||
Строка 54: | Строка 54: | ||
</pre> | </pre> | ||
===== | ===== Включение exim ===== | ||
После добавления этой опции и редактирования конфига мы сможем запустить Exim: | |||
<pre> | <pre> | ||
echo 'exim_enable="YES"' > /etc/rc.conf.d/exim | echo 'exim_enable="YES"' > /etc/rc.conf.d/exim | ||
Строка 73: | Строка 74: | ||
</pre> | </pre> | ||
По умолчанию опция закомментирована и информация берется из системы, но я бы рекомендовал активировать эту опцию.<br> | По умолчанию опция закомментирована и информация берется из системы, но я бы рекомендовал активировать эту опцию.<br> | ||
Указываем адрес сервера полностью, с доменом. Если сервер работает и на локальную сеть, и на интернет, то указываем существующий и доступный домен для интернета | Указываем адрес сервера полностью, с доменом. Если сервер работает и на локальную сеть, и на интернет, то указываем существующий и доступный домен для интернета: | ||
<pre> | <pre> | ||
primary_hostname = mx1.gwtools.ru | primary_hostname = mx1.gwtools.ru | ||
</pre> | </pre> | ||
===== ===== | <pre> | ||
domainlist local_domains = @ | |||
domainlist relay_to_domains = | |||
hostlist relay_from_hosts = localhost | |||
</pre> | |||
Указываем адреса и домены с доступом к почте. Разделителем является двоеточие.<br> | |||
Список local_domains содержит список обслуживаемых этим сервером доменов.<br> | |||
Список relay_to_domains содержит список доменов, на которые можно отправлять почту без авторизации (проверка по получателю, например, на др. почтовый сервер).<br> | |||
Список relay_from_hosts содержит список адресов или доменов, с которых разрешён доступ на отправку почты через данный сервер (например, локальная сеть). | |||
<pre> | |||
domainlist local_domains = gwtools.ru | |||
domainlist relay_to_domains = | |||
hostlist relay_from_hosts = localhost : 192.168.0.0/24 | |||
</pre> | |||
===== Запуск exim ===== | |||
Данных изменений достаточно, чтобы запустить Exim и он мог получать и отправлять почту: | |||
<pre> | |||
service exim start | |||
</pre> | |||
==== Настройка DKIM ==== | |||
Переходим в папке с конфигами Exim: | |||
<pre> | |||
cd /usr/local/etc/exim | |||
</pre> | |||
===== Приватный ключ ===== | |||
<pre> | |||
openssl genrsa -out gwtools.ru.private 1024 | |||
</pre> | |||
===== Публичный ключ ===== | |||
Публичный ключ генерируется на основе приватного и добавляется в DNS-запись и поэтому потребуется нам немного позже. | |||
<pre> | |||
openssl rsa -in gwtools.ru.private -pubout > gwtools.ru.public | |||
</pre> | |||
==== Настройка 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> | |||
mx1 TXT "v=DKIM1; k=rsa; t=s; p=ABC...XYZ" | |||
</pre> | |||
===== ADSP ===== | |||
ADSP (Author Domain Signing Practices, http://tools.ietf.org/search/rfc5617 ) — практики использования DKIM в домене.<br> | |||
ADSP это опциональное расширение DKIM, которое позволяет сообщать почтовым серверам-получателям, что делать с письмом пришедшим с якобы нашего домена, но не имеющее подписи.<br> | |||
<pre> | |||
_adsp TXT "dkim=all" | |||
</pre> | |||
===== 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 почтового сервера: | |||
<pre> | |||
telnet localhost 25 | |||
HELO localhost | |||
MAIL FROM:user@gwtools.ru | |||
RCPT TO:user@ya.ru | |||
DATA | |||
SUBJECT:test subj | |||
test msg | |||
. | |||
</pre> | |||
[[Category:FreeBSD]] | [[Category:FreeBSD]] | ||
[[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 .