Установить и интегрировать Rspamd

Это третья часть нашей установки и настройки почтового сервера . В этом руководстве мы рассмотрим установку и настройку системы фильтрации спама 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 updatesudo apt install 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 сервера 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_headers.conf :

/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 и добавьте следующую директиву местоположения, выделенную желтым:

/etc/nginx/sites-enabled/mail.linuxize.com.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

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

После установки пакетов откройте следующие файлы и отредактируйте строки, выделенные желтым цветом.

/etc/dovecot/conf.d/20-lmtp.conf
...
protocol lmtp {
  postmaster_address = [email protected]
  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
    ....
}

Сохраните и закройте файлы.

Создайте каталог для скриптов сита:

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

Скомпилируйте скрипты сита и установите правильные разрешения:

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 утилиты 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.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 .

Оставьте комментарий