При организации простого почтового сервера достаточно популярным решением является MTA Exim, к которому для фильтрации спама подключают SpamAssassin. В качестве промежуточного звена, упрощающего подключение одного сервиса к другому часто используют плагин для exim под названием "sa-exim".
Автор этих строк так же использует связку exim+sa-exim+spamassassin и в какой-то момент появилась небольшая задача: завести "белый" список адресов и сетей, почта с которых должна приниматься без проверки. Задача была быстро и успешно решена, а описание решения приведено ниже.
Все настройки sa-exim находятся в файле "sa-exim.conf", который в Debian и Ubuntu расположен в директории "/etc/exim4", а на FreeBSD - в "/usr/local/etc/exim". Интересной особенностью sa-exim является то что на каждое письмо файл настроек перечитывается заново, а ещё в нём поддерживаются те же функции что и в основном файле настроек exim.
По умолчанию условие включения проверки выглядит так:
SAEximRunCond: ${if and {{def:sender_host_address} {!eq {$sender_host_address}{127.0.0.1}} {!eq {$sender_host_address}{::1}}}}
Здесь вычисляется логическое выражение: проверяется что определён IP-адрес отправителя и что он не является адресом петлевого интерфейса. Вобщем-то можно начать "расширять" это выражение. Но оно быстро станет громоздким и неудобным. Гораздо удобнее иметь список разрешённых адресов в отдельном файле да ещё и с возможностью указывать целые подсети. В итоге строка была приведена к виду:
SAEximRunCond: ${if and {{def:sender_host_address} {!eq {$sender_host_address}{127.0.0.1}} {!eq {$sender_host_address}{::1}} {!match_ip{$sender_host_address}{iplsearch;/etc/exim4/sa-sender-host-whitelist}} }}
А так же был создан файл "/etc/exim4/sa-sender-host-whitelist", в котором и описываются адреса и подсети, которым мы доверяем. Выглядит он примерно так:
# Локальная сеть 192.168.12.0/24 # Дружественные сервера 1.2.5.4 5.4.7.8
Здесь мы добавляем ещё одно условие, в котором требуем чтобы IP-адрес сервера отправителя не был перечислен в файле "/etc/exim4/sa-sender-host-whitelist". Если же IP-адрес там упомянут то проверка почты запускаться не будет.
После этого нужно перезапустить exim:
service exim4 restart
Перезапуск нужен чтобы применить новые настройки sa-exim. После этого можно добавлять и удалять записи в список уже без перезапуска.
Приятной работы!