Настройка · 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.hourly
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.