
Это третья часть нашего руководства по настройке и конфигурированию почтового сервера . В этом руководстве мы рассмотрим установку и настройку системы фильтрации спама Rspamd, а также её интеграцию в наш почтовый сервер, создав DNS-записи DKIM и DMARC.
Вы можете спросить, почему мы выбрали Rspamd, а не Spamassassin. Rspamd более активно поддерживается, написан на C и работает гораздо быстрее, чем Spamassassin, написанный на Perl. Другая причина заключается в том, что Rspamd поставляется с модулем подписи DKIM, поэтому нам не придётся использовать другое программное обеспечение для подписи исходящих писем.
Если вы не знакомы с Rspamd, вы можете ознакомиться с его официальной документацией здесь.
Предпосылки
Прежде чем продолжить работу с этим руководством, убедитесь, что вы вошли в систему как пользователь с привилегиями sudo .
Установить Redis
Redis будет использоваться Rspamd в качестве системы хранения и кэширования, для его установки просто выполните:
sudo apt install redis-server
Установить Unbound
Unbound — очень безопасный проверяющий, рекурсивный и кэширующий DNS-резолвер.
Основная цель установки этой службы — сократить количество внешних DNS-запросов. Этот шаг необязателен и может быть пропущен.
sudo apt updatesudo apt install unbound
Настроек Unbound по умолчанию должно быть достаточно для большинства серверов.
Чтобы установить unbound в качестве основного DNS-преобразователя сервера, выполните следующие команды:
sudo echo "nameserver 127.0.0.1" >> /etc/resolvconf/resolv.conf.d/headsudo resolvconf -u
Если вы не используете resolvconf , то вам необходимо вручную отредактировать файл /etc/resolv.conf .
Установить Rspamd
Мы установим последнюю стабильную версию Rspamd из официального репозитория.
Начните с установки необходимых пакетов:
sudo apt install software-properties-common lsb-releasesudo 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 updatesudo apt install rspamd
Настроить Rspamd
Вместо изменения стандартных файлов конфигурации мы создадим новые файлы в каталоге /etc/rspamd/local.d/local.d/ которые перезапишут настройки по умолчанию.
По умолчанию normal worker Rspamd, сканирующий сообщения электронной почты, прослушивает все интерфейсы на порту 11333. Создайте следующий файл, чтобы настроить обычный рабочий процесс Rspamd на прослушивание только интерфейса localhost:
/etc/rspamd/local.d/worker-normal.inc
bind_socket = "127.0.0.1:11333";
proxy worker прослушивает порт 11332 и поддерживает протокол milter. Чтобы Postfix мог взаимодействовать с Rspamd, необходимо включить режим milter:
/etc/rspamd/local.d/worker-proxy.inc
bind_socket = "127.0.0.1:11332"; milter = yes; timeout = 120s; upstream "local" { default = yes; self_scan = yes; }
Далее нам нужно настроить пароль для сервера controller worker , который обеспечивает доступ к веб-интерфейсу Rspamd. Чтобы сгенерировать зашифрованный пароль, выполните:
rspamadm pw --encrypt -p P4ssvv0rD
Вывод должен выглядеть примерно так:
$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb
Не забудьте сменить пароль ( P4ssvv0rD ) на более безопасный.
Скопируйте пароль из вашего терминала и вставьте его в файл конфигурации:
/etc/rspamd/local.d/worker-controller.inc
password = "$2$khz7u8nxgggsfay3qta7ousbnmi1skew$zdat4nsm7nd3ctmiigx9kjyo837hcjodn1bob5jaxt7xpkieoctb";
Позже мы настроим Nginx как обратный прокси-сервер для веб-сервера рабочего контроллера, чтобы иметь доступ к веб-интерфейсу Rspamd.
Настройте Redis в качестве бэкэнда для статистики Rspamd, добавив следующие строки в файл classifier-bayes.conf :
/etc/rspamd/local.d/classifier-bayes.conf
servers = "127.0.0.1"; backend = "redis";
Откройте файл milter_headers.conf и настройте заголовки milter:
/etc/rspamd/local.d/milter_headers.conf
use = ["x-spamd-bar", "x-spam-level", "authentication-results"];
Более подробную информацию о заголовках milter можно найти здесь .
Наконец, перезапустите службу Rspamd, чтобы изменения вступили в силу:
sudo systemctl restart rspamd
Настройка Nginx
В первой части этой серии мы создали блок сервера Nginx для экземпляра PostfixAdmin.
Откройте файл конфигурации Nginx и добавьте следующую директиву location, выделенную желтым цветом:
/etc/nginx/sites-enabled/mail.linuxgazette.ru.conf
... 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
Перейдите по адресу https://mail.linuxgazette.ru/rspamd/ , введите пароль, который вы ранее сгенерировали с помощью команды rspamadm pw , и вам будет представлен веб-интерфейс Rspamd.
Настроить Postfix
Нам необходимо настроить Postfix для использования milter-фильтра Rspamd.
Выполните следующую команду для обновления основного файла конфигурации 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
После установки пакетов откройте следующие файлы и отредактируйте строки, выделенные желтым цветом.
/etc/dovecot/conf.d/20-lmtp.conf
... protocol lmtp { postmaster_address = postmaster@linuxgazette.ru mail_plugins = $mail_plugins sieve } ...
/etc/dovecot/conf.d/20-imap.conf
... protocol imap { ... mail_plugins = $mail_plugins imap_quota imap_sieve ... } ...
/etc/dovecot/conf.d/20-managesieve.conf
... service managesieve-login { inet_listener sieve { port = 4190 } ... } ... service managesieve { process_limit = 1024 } ...
/etc/dovecot/conf.d/90-sieve.conf
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 .... }
Сохраните и закройте файлы.
Создайте каталог для скриптов sieve:
mkdir -p /var/mail/vmail/sieve/global
Создайте глобальный фильтр для перемещения писем, помеченных как спам, в каталог Spam :
/var/mail/vmail/sieve/global/spam-global.sieve
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 или из него:
/var/mail/vmail/sieve/global/report-spam.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"]; pipe :copy "rspamc" ["learn_spam"];
/var/mail/vmail/sieve/global/report-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve"]; pipe :copy "rspamc" ["learn_ham"];
Перезапустите службу Dovecot, чтобы изменения вступили в силу:
sudo systemctl restart dovecot
Скомпилируйте скрипты sieve и установите правильные разрешения:
sievec /var/mail/vmail/sieve/global/spam-global.sievesievec /var/mail/vmail/sieve/global/report-spam.sievesievec /var/mail/vmail/sieve/global/report-ham.sievesudo chown -R vmail: /var/mail/vmail/sieve/
Создать ключи DKIM
DomainKeys Identified Mail (DKIM) — это метод аутентификации электронной почты, который добавляет криптографическую подпись к заголовкам исходящих сообщений. Это позволяет получателю убедиться, что электронное письмо, якобы отправленное с определённого домена, действительно было авторизовано его владельцем. Основная цель этого — предотвратить отправку поддельных сообщений.
У нас могут быть разные ключи DKIM для всех наших доменов и даже несколько ключей для одного домена, но для простоты этой статьи мы будем использовать один ключ DKIM, который позже можно будет использовать для всех новых доменов.
Создайте новый каталог для хранения ключа DKIM и сгенерируйте новую пару ключей DKIM с помощью утилиты 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/dkimsudo chmod 440 /var/lib/rspamd/dkim/*
Теперь нам нужно указать Rspamd, где искать ключ DKIM, имя селектора и последнюю строку, которая включит DKIM-подпись для псевдонимов отправителей. Для этого создайте новый файл со следующим содержимым:
/etc/rspamd/local.d/dkim_signing.conf
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— это идентификатор DMARC -
p=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.linuxgazette.ru TXT +short
"v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqdBRCqYzshc4LmmkxUkCH/rcIpSe/QdNIVmBrgqZmZ5zzWQi7ShdFOH7V32/VM1VRk2pkjDV7tmfbwslsymsfxgGhVHbU0R3803uRfxAiT2mYu1hCc9351YpZF4WnrdoA3BT5juS3YUo5LsDxvZCxISnep8VqVSAZOmt8wFsZKBXiIjWuoI6XnWrzsAfoaeGa" "VuUZBmi4ZTg0O4ylnVlIz11McdZTRe1FlONOzO7ZkQFb7O6ogFdepWLsM9tYJ38TFPteqyO3XBjxHzp1AT0UvsPcauDoeHUXgqbxU7udG1t05f6ab5h/Kih+jisgHHF4ZFK3qRtawhWlA9DtS35DlwIDAQAB"
dig _dmarc.linuxgazette.ru TXT +short
"v=DMARC1; p=none; adkim=r; aspf=r;"
Вы также можете проверить текущую политику DMARC вашего домена или создать собственную политику DMARC здесь .
Заключение
На этом эта часть руководства закончена. В следующей части мы продолжим установку и настройку RoundCube .
почтовый сервер postfix dovecot dns rspamd
Эта публикация является частью серии «Настройка и конфигурирование почтового сервера» .
Другие посты в этой серии:
Связанные руководства