Это третья часть нашей установки и настройки почтового сервера . В этом руководстве мы рассмотрим установку и настройку системы фильтрации спама Rspamd и ее интеграцию с нашим почтовым сервером, создав записи DNS DKIM и DMARC.
Вы можете спросить, почему мы выбрали Rspamd, а не Spamassassin. Rspamd более активно поддерживается и написан на C, и он намного быстрее, чем Spamassassin, написанный на Perl. Другая причина заключается в том, что Rspamd поставляется с модулем подписи DKIM, поэтому нам не придется использовать другое программное обеспечение для подписи исходящих писем.
Если вы не знакомы с Rspamd, вы можете проверить их официальную документацию здесь
Содержание
Подготовка
Прежде чем продолжить это руководство, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .
Установите Redis
Redis будет использоваться Rspamd как система хранения и кеширования, для его установки просто запустите:
sudo apt install redis-server
Установить несвязанный
Unbound — это очень безопасный проверяющий, рекурсивный и кэширующий преобразователь DNS.
Основная цель установки этой службы — уменьшить количество внешних DNS-запросов. Этот шаг не является обязательным и его можно пропустить.
sudo apt update
sudo apt install unbound
Для большинства серверов достаточно настроек по умолчанию для несвязанных файлов.
Чтобы установить несвязанный в качестве основного DNS-преобразователя вашего сервера, выполните следующие команды:
sudo echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u
resolvconf
вам необходимо отредактировать файл /etc/resolv.conf
вручную.Установить Rspamd
Мы установим последнюю стабильную версию Rspamd из официального репозитория.
Начнем с установки необходимых пакетов:
sudo apt install software-properties-common lsb-release
sudo apt install lsb-release wget
Добавьте GPG-ключ репозитория в свою связку ключей apt sources, используя следующую команду wget :
wget -O- https://rspamd.com/apt-stable/gpg.key | sudo apt-key add -
Включите репозиторий Rspamd, запустив:
echo "deb http://rspamd.com/apt-stable/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/rspamd.list
После включения репозитория обновите индекс пакета и установите Rspamd, используя следующие команды:
sudo apt update
sudo apt install rspamd
Настроить Rspamd
Вместо изменения стандартных файлов конфигурации мы создадим новые файлы в каталоге /etc/rspamd/local.d/local.d/
которые перезапишут настройки по умолчанию.
По умолчанию normal worker
Rspamd, который сканирует сообщения электронной почты, прослушивает все интерфейсы на порту 11333. Создайте следующий файл, чтобы настроить обычного рабочего Rspamd на прослушивание только интерфейса localhost:
bind_socket = "127.0.0.1:11333";
proxy worker
прослушивает порт 11332 и поддерживает протокол milter. Чтобы Postfix мог взаимодействовать с Rspamd, нам нужно включить режим milter:
bind_socket = "127.0.0.1:11332";
milter = yes;
timeout = 120s;
upstream "local" {
default = yes;
self_scan = yes;
}
Затем нам нужно установить пароль для controller worker
сервера controller worker
который обеспечивает доступ к веб-интерфейсу Rspamd. Чтобы сгенерировать зашифрованный пароль, выполните:
rspamadm pw --encrypt -p P4ssvv0rD
Результат должен выглядеть примерно так:
$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb
P4ssvv0rD
) на более безопасный.Скопируйте пароль со своего терминала и вставьте его в файл конфигурации:
password = "$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb";
Позже мы настроим Nginx как обратный прокси для рабочего веб-сервера контроллера, чтобы мы могли получить доступ к веб-интерфейсу Rspamd.
Установите Redis в качестве бэкенда для статистики Rspamd, добавив следующие строки в файл classifier-bayes.conf
:
servers = "127.0.0.1";
backend = "redis";
Откройте файл milter_headers.conf
и установите заголовки milter_headers.conf
:
use = ["x-spamd-bar", "x-spam-level", "authentication-results"];
Вы можете найти больше информации о заголовках milter здесь .
Наконец, перезапустите службу Rspamd, чтобы изменения вступили в силу:
sudo systemctl restart rspamd
Настроить Nginx
В первой части этой серии мы создали серверный блок Nginx для экземпляра PostfixAdmin.
Откройте файл конфигурации Nginx и добавьте следующую директиву местоположения, выделенную желтым:
...
location /rspamd {
proxy_pass http://127.0.0.1:11334/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
Перезагрузите службу Nginx, чтобы изменения вступили в силу:
sudo systemctl reload nginx
rspamadm pw
на https://mail.linuxize.com/rspamd/
, введите пароль, который вы ранее сгенерировали с помощью команды rspamadm pw
и вам будет представлен веб-интерфейс Rspamd.
Настроить Postfix
Нам нужно настроить Postfix для использования Rspamd milter.
Выполните следующую команду, чтобы обновить основной файл конфигурации Postfix:
sudo postconf -e "milter_protocol = 6"
sudo postconf -e "milter_mail_macros = i {mail_addr} {client_addr} {client_name} {auth_authen}"
sudo postconf -e "milter_default_action = accept"
sudo postconf -e "smtpd_milters = inet:127.0.0.1:11332"
sudo postconf -e "non_smtpd_milters = inet:127.0.0.1:11332"
Перезапустите службу Postfix, чтобы изменения вступили в силу:
sudo systemctl restart postfix
Настроить Dovecot
Мы уже установили и настроили Dovecot во второй части этой серии, а теперь мы установим модуль sieve
фильтрации и интегрируем Dovecot с Rspamd.
Начните с установки модуля фильтрации Dovecot:
sudo apt install dovecot-sieve dovecot-managesieved
После установки пакетов откройте следующие файлы и отредактируйте строки, выделенные желтым цветом.
...
protocol lmtp {
postmaster_address = [email protected]
mail_plugins = $mail_plugins sieve
}
...
...
protocol imap {
...
mail_plugins = $mail_plugins imap_quota imap_sieve
...
}
...
...
service managesieve-login {
inet_listener sieve {
port = 4190
}
...
}
...
service managesieve {
process_limit = 1024
}
...
plugin {
...
# sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_plugins = sieve_imapsieve sieve_extprograms
sieve_before = /var/mail/vmail/sieve/global/spam-global.sieve
sieve = file:/var/mail/vmail/sieve/%d/%n/scripts;active=/var/mail/vmail/sieve/%d/%n/active-script.sieve
imapsieve_mailbox1_name = Spam
imapsieve_mailbox1_causes = COPY
imapsieve_mailbox1_before = file:/var/mail/vmail/sieve/global/report-spam.sieve
imapsieve_mailbox2_name = *
imapsieve_mailbox2_from = Spam
imapsieve_mailbox2_causes = COPY
imapsieve_mailbox2_before = file:/var/mail/vmail/sieve/global/report-ham.sieve
sieve_pipe_bin_dir = /usr/bin
sieve_global_extensions = +vnd.dovecot.pipe
....
}
Сохраните и закройте файлы.
Создайте каталог для скриптов сита:
mkdir -p /var/mail/vmail/sieve/global
Создайте глобальный сетчатый фильтр для перемещения писем, помеченных как спам, в каталог Spam
:
require ["fileinto","mailbox"];
if anyof(
header :contains ["X-Spam-Flag"] "YES",
header :contains ["X-Spam"] "Yes",
header :contains ["Subject"] "*** SPAM ***"
)
{
fileinto :create "Spam";
stop;
}
Следующие два скрипта сита будут запускаться всякий раз, когда вы перемещаете электронное письмо в каталог Spam
или из него:
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_spam"];
require ["vnd.dovecot.pipe", "copy", "imapsieve"];
pipe :copy "rspamc" ["learn_ham"];
Перезапустите сервис Dovecot, чтобы изменения вступили в силу:
sudo systemctl restart dovecot
Скомпилируйте скрипты сита и установите правильные разрешения:
sievec /var/mail/vmail/sieve/global/spam-global.sieve
sievec /var/mail/vmail/sieve/global/report-spam.sieve
sievec /var/mail/vmail/sieve/global/report-ham.sieve
sudo chown -R vmail: /var/mail/vmail/sieve/
Создать ключи DKIM
DomainKeys Identified Mail (DKIM) — это метод проверки подлинности электронной почты, который добавляет криптографическую подпись к заголовкам исходящих сообщений. Это позволяет получателю проверить, что электронное письмо, которое якобы отправлено из определенного домена, действительно было авторизовано владельцем этого домена. Основная цель этого — предотвратить подделку электронных писем.
У нас могут быть разные ключи DKIM для всех наших доменов и даже несколько ключей для одного домена, но для простоты этой статьи мы будем использовать один ключ DKIM, который позже можно будет использовать для всех новых доменов.
Создайте новый каталог для хранения ключа DKIM и сгенерируйте новую пару ключей DKIM с rspamadm
утилиты rspamadm
:
sudo mkdir /var/lib/rspamd/dkim/
rspamadm dkim_keygen -b 2048 -s mail -k /var/lib/rspamd/dkim/mail.key | sudo tee -a /var/lib/rspamd/dkim/mail.pub
В приведенном выше примере мы используем mail
в качестве селектора DKIM.
Теперь у вас должно быть два новых файла в каталоге /var/lib/rspamd/dkim/
, mail.key
который является нашим файлом закрытого ключа, и mail.pub
файлом, содержащим открытый ключ DKIM. Мы обновим записи нашей зоны DNS позже.
Установите правильное владение и разрешения :
sudo chown -R _rspamd: /var/lib/rspamd/dkim
sudo chmod 440 /var/lib/rspamd/dkim/*
Теперь нам нужно указать Rspamd, где искать ключ DKIM, имя селектора и последняя строка включит подпись DKIM для псевдонимов адресов отправителей. Для этого создайте новый файл со следующим содержимым:
selector = "mail";
path = "/var/lib/rspamd/dkim/$selector.key";
allow_username_mismatch = true;
Rspamd также поддерживает подпись для подписей Authenticated Received Chain (ARC). Вы можете найти дополнительную информацию о спецификации ARC здесь .
Rspamd использует модуль DKIM для работы с подписями ARC, так что мы можем просто скопировать предыдущую конфигурацию:
sudo cp /etc/rspamd/local.d/dkim_signing.conf /etc/rspamd/local.d/arc.conf
Перезапустите службу Rspamd, чтобы изменения вступили в силу:
sudo systemctl restart rspamd
Настройки DNS
Мы уже создали пару ключей DKIM, и теперь нам нужно обновить нашу зону DNS. Открытый ключ DKIM хранится в файле mail.pub
. Содержимое файла должно выглядеть так:
cat /var/lib/rspamd/dkim/mail.pub
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4yl"
"nVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
) ;
Если вы используете свой собственный DNS-сервер Bind, вам просто нужно скопировать и вставить запись прямо в файл зоны вашего домена. Если вы используете веб-интерфейс DNS, вам нужно создать новую запись TXT с mail._domainkey
в качестве имени, а для значения / содержимого вам нужно будет удалить кавычки и объединить все три строки вместе. В нашем случае значение / содержание записи TXT должно выглядеть так:
v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGaVuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB
Мы также создадим доменную аутентификацию сообщений ( DMARC
), которая предназначена для того, чтобы сообщать принимающему серверу, следует ли принимать электронное письмо от определенного отправителя. По сути, это защитит ваш домен от прямого подделки домена и улучшит репутацию вашего домена.
Если вы следили за серией с самого начала, у вас уже должна быть запись SFP
для вашего домена. Чтобы настроить запись DMARC, в отправляющем домене должны быть опубликованы записи SPF и DKIM. Политика DMARC публикуется в виде записи TXT и определяет, как получатель должен обрабатывать письма из вашего домена в случае сбоя проверки.
В этой статье мы реализуем следующую политику DMARC:
_dmarc IN TXT "v=DMARC1; p=none; adkim=r; aspf=r;"
Давайте разберем приведенную выше запись DMARC:
v=DMARC1
— это идентификатор DMARCp=none
— указывает получателю, что делать с сообщениями, не прошедшими DMARC. В нашем случае для него установлено значение none, что означает, что не предпринимать никаких действий, если сообщение не прошло DMARC. Вы также можете использовать «отклонить» илиquarantine
adkim=r
иaspf=r
— выравниваниеDKIM
иSPF
,r
для Relaxed иs
для Strict, в нашем случае мы используем Relaxed Alignment как для DKIM, так и для SPF.
Как и раньше, если вы используете свой собственный DNS-сервер Bind, вам просто нужно скопировать и вставить запись в файл своей доменной зоны, а если вы используете другого поставщика DNS, вам необходимо создать запись TXT с _dmarc
в качестве имени и v=DMARC1; p=none; adkim=r; aspf=r;
как ценность / содержание.
Изменения DNS вступят в силу через некоторое время. Проверить, распространились ли записи, можно с помощью команды dig :
dig mail._domainkey.linuxize.com TXT +short
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGa" "VuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFdepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
dig _dmarc.linuxize.com TXT +short
"v=DMARC1; p=none; adkim=r; aspf=r;"
Вы также можете проверить текущую политику DMARC вашего домена или создать свою собственную политику DMARC здесь .
Выводы
Это все, что касается этой части учебника. В следующей части этой серии мы продолжим установку и настройку RoundCube .
Этот пост является частью серии «Установка и настройка почтового сервера». Другие сообщения из этой серии: