Настройка · 5 min read · Jan 03, 2026
Mailscanner/Exim Gateway With Communigate PRO Guide - Page 2
Антиспам
Если вы хотите отклонять сообщения от серверов без обратного DNS, добавьте это под acl_check_rcpt:, у него есть список исключений, в который вы можете добавить домены, к которым acl не должен применяться, и он пытается доставить тестовое сообщение на адрес отправителя, чтобы проверить, является ли отправитель действительным.
drop message = REJECTED - Мы не принимаем сообщения от хостов без обратного DNS
log_message = Нет обратного DNS
domains = ! lsearch;/etc/exim/checks_exempt_hosts
!verify = reverse_host_lookup
!verify = sender/callout=2m,defer_ok
!condition = ${if eq{$sender_verify_failure}{} }Чтобы отклонить сообщения от клиентов, которые не предоставляют HELO/EHLO, добавьте это в acl_check_rcpt:
drop message = REFUSED - нет приветствия HELO/EHLO
log_message = удаленный хост не представил приветствие
condition = ${if def:sender_helo_name {false}{true}}Вы также можете ограничить количество соединений с вашим сервером, добавив это в acl_check_connect: (читайте документацию exim по параметрам, если хотите настроить это для вашего сайта).
deny ratelimit = 250 / 15m / strict
message = Вы можете отправлять только $sender_rate за $sender_rate_period
log_message = RATE: $sender_rate/$sender_rate_period (макс $sender_rate_limit)
acceptОстановите злонамеренные спам-боты от порчи вашего компьютера.
smtp_accept_max_nonmail = 30
smtp_max_unknown_commands = 1Разрешите пайплайнинг только с локального хоста, чтобы позже вы могли использовать mailfeeder для отправки почты.
pipelining_advertise_hosts = 127.0.0.1Проверка адреса
Это использует маршрутизатор check_backend для связи с вашей системой communigate pro через ldap, чтобы убедиться, что адрес существует, прежде чем принимать почту для этого адреса.
Добавьте ваши серверы ldap по умолчанию в конфигурацию exim.
ldap_default_servers = xxx.xxx.xxx.xxxНастройте домены, которые имеют учетную запись catchall (без проверки, существует ли адрес, прежде чем принимать почту.
# пример /etc/exim/catchall_domains
somedomain.comУкажите это в конфигурации exim.
domainlist domains_with_catchall = lsearch;/etc/exim/catchall_domainsСоздайте и добавьте домены CGP с поддержкой ldap в файл /etc/exim/ldap-domains. Первый столбец - это псевдоним домена или домен, а второй - фактический домен, как он существует в ldap, так как при синхронизации доменов CGP с ldap он не копирует псевдонимы доменов.
#пример /etc/exim/ldap-domains
example.com: example.com
example.co.za: example.comСоздайте маршрутизатор check_backend, это должен быть первый маршрутизатор в вашей конфигурации.
check_backend:
driver = redirect
domains = ! +domains_with_catchall : +relay_to_domains
allow_fail
allow_defer
forbid_file
forbid_pipe
data = ${lookup ldap{ldap:///uid=${local_part},cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?mail}{$value}{:fail: Unknown user}}
#version 5.x используйте это вместо
#data = ${lookup ldap{ldap:///cn=${lookup{$domain}lsearch{/etc/exim/ldap-domains}}?uid?sub?(uid=$local_part)}{$local_part@$domain}{:fail: User Unknown}}Чистая доставка Exim
Это конфигурация, которая используется для доставки чистой почты, которую mailscanner уже просканировал. Файл конфигурации - /etc/exim/exim_out.conf. Для этого вы можете использовать конфигурацию по умолчанию со всеми проверками и acl, убранными.
Вам нужно добавить этот маршрутизатор для доставки очищенной почты на фактические серверы CGP. Если вы работаете с кластером, этот маршрутизатор способен распределять доставки по серверам, которые вы настроили в /etc/exim/mail-routes, делая его полностью избыточным.
deliver_clean:
driver = manualroute
domains = +relay_to_domains
transport = remote_smtp
hosts_randomize = true
route_data = ${lookup{$domain}lsearch{/etc/exim/mail-routes}}Настройка MySQL
Добавьте это в файл конфигурации /etc/my.cnf:
socket=/var/lib/mysql/mysql.sock
skip-networkingЭто настраивает mysql на общение только через сокет, а не tcp, что лучше для безопасности и производительности.
Запустите mysql, это инициализирует базы данных по умолчанию.
service mysqld startУстановите пароль для пользователя root:
mysqladmin -u root password NEWPASSWORDСоздайте базу данных mailwatch и заполните таблицы:
mysql -p < /usr/local/src/mailwatch-1.0.4/create.sqlСоздайте пользователя mysql для mailwatch и ведения журнала mailscanner:
mysql
mysql> GRANT ALL ON mailscanner.* TO mailwatch@localhost IDENTIFIED BY 'password';Создайте администратора mailwatch:
mysql mailscanner -u mailwatch -p
Введите пароль: ******
mysql> INSERT INTO users VALUES ('',md5(' '),'','A','0','0','0','0','0'); Настройка MailScanner
Введение
Mailscanner имеет несколько параметров конфигурации, я остановлюсь только на тех, которые необходимы для работы системы. Чтобы дополнительно настроить систему, пожалуйста, прочитайте документацию по mailscanner или посмотрите образцы конфигурационных файлов, которые я предоставил.
Основная конфигурация
Пожалуйста, отредактируйте следующие переменные конфигурации в /etc/MailScanner/MailScanner.conf:
Run As User = exim
Run As Group = exim
Incoming Queue Dir = /var/spool/exim.in/input
Outgoing Queue Dir = /var/spool/exim/input
MTA = exim
Sendmail = /usr/sbin/exim -C /etc/exim/exim_out.conf
Sendmail2 = /usr/sbin/exim -C /etc/exim/exim_out.conf
Quarantine User = exim
Quarantine Group = apache
Quarantine Permissions = 0660
Quarantine Infections = yes
Quarantine Whole Message = yes
Quarantine Whole Messages As Queue Files = no
Keep Spam And MCP Archive Clean = yes
Spam Actions = store
High Scoring Spam Actions = store
Detailed Spam Report = yes
Include Scores In SpamAssassin Report = yes- Установите разрешения
chown exim.exim -R /var/spool/MailScanner/incoming
mkdir -p /var/spool/exim.in/{input,msglog,scan,db}
chown exim.exim /var/spool/exim.in/{input,msglog,scan,db}Антивирус
Если у вас есть второй антивирусный сканер, установите
Virus Scanning = yes
Virus Scanners = "имя антивирусного сканера"Черные и белые списки
Мы будем использовать основанное на SQL (mysql) белое и черное списки для легкой интеграции с интерфейсом mailwatch, чтобы пользователи могли добавлять отправителей в белый и черный списки из веб-интерфейса.
Отредактируйте файл конфигурации mailscanner и добавьте:
Is Definitely Not Spam = &SQLWhitelist
Is Definitely Spam = &SQLBlacklist
Ignore Spam Whitelist If Recipients Exceed = 20Отредактируйте файл /usr/lib/MailScanner/MailScanner/CustomFunctions/SQLBlackWhiteList.pm:
sub CreateList {
my($type, $BlackWhite) = @_;
my($dbh, $sth, $sql, $to_address, $from_address, $count);
my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'password';Интеграция Mailwatch
Отредактируйте файл конфигурации mailscanner и добавьте:
Always Looked Up Last = &MailWatchLoggingОтредактируйте файл /usr/lib/MailScanner/MailScanner/CustomFunctions/MailWatch.pm:
my($db_name) = 'mailscanner';
my($db_host) = 'localhost';
my($db_user) = 'mailwatch';
my($db_pass) = 'password';Настройка Spamassassin
Эта конфигурация будет использовать базу данных mysql для хранения информации bayes. Поэтому мы создадим базу данных и пользователя, которые будут использоваться для подключения к базе данных. Мы также будем использовать дополнительные правила (SARE, размещенные Дэрилом С. В. О’Ши http://www.dostech.ca/), поэтому мы настроим sa-update для автоматической загрузки их.
Создайте базу данных MySQL
mysqladmin -p create bayesЗаполните базу данных:
mysql -p bayes < /usr/share/doc/spamassassin-3.2.3/sql/bayes_mysql.sqlСоздайте пользователя:
mysql -p
mysql> GRANT ALL ON bayes.* TO bayes@localhost IDENTIFIED BY 'password';Настройка для использования БД
Отредактируйте файл /etc/mail/spamassassin/local.cf и добавьте:
bayes_store_module Mail::SpamAssassin::BayesStore::MySQL
bayes_sql_dsn DBI:mysql:bayes:localhost
bayes_sql_override_username bayes
bayes_sql_username bayes
bayes_sql_password passwordОбновления правил SARE
Импортируйте GPG-ключ, используемый для подписания правил:
wget http://daryl.dostech.ca/sa-update/sare/GPG.KEY sa-update --import GPG.KEYСоздайте файл каналов /etc/mail/spamassassin/sare-sa-update-channels.txt:
updates.spamassassin.org
72_sare_redirect_post3.0.0.cf.sare.sa-update.dostech.net
70_sare_evilnum0.cf.sare.sa-update.dostech.net
70_sare_bayes_poison_nxm.cf.sare.sa-update.dostech.net
70_sare_html0.cf.sare.sa-update.dostech.net
70_sare_html_eng.cf.sare.sa-update.dostech.net
70_sare_header0.cf.sare.sa-update.dostech.net
70_sare_header_eng.cf.sare.sa-update.dostech.net
70_sare_specific.cf.sare.sa-update.dostech.net
70_sare_adult.cf.sare.sa-update.dostech.net
72_sare_bml_post25x.cf.sare.sa-update.dostech.net
99_sare_fraud_post25x.cf.sare.sa-update.dostech.net
70_sare_spoof.cf.sare.sa-update.dostech.net
70_sare_random.cf.sare.sa-update.dostech.net
70_sare_oem.cf.sare.sa-update.dostech.net
70_sare_genlsubj0.cf.sare.sa-update.dostech.net
70_sare_genlsubj_eng.cf.sare.sa-update.dostech.net
70_sare_unsub.cf.sare.sa-update.dostech.net
70_sare_uri0.cf.sare.sa-update.dostech.net
70_sare_obfu0.cf.sare.sa-update.dostech.net
70_sare_stocks.cf.sare.sa-update.dostech.netСоздайте скрипт обновления /usr/local/bin/update-sa:
#!/bin/bash
#
#
sa-update -D --channelfile /etc/mail/spamassassin/sare-sa-update-channels.txt --gpgkey 856AA88AСделайте его исполняемым и добавьте в cron:
chmod +x /usr/local/bin/update-sa
ln -s /usr/local/bin/update-sa /etc/cron.daily/
ln -s /usr/local/bin/update-sa /etc/cron.hourlyGet new posts in your inbox
No spam. Unsubscribe anytime.