Для передачи писем на проверку используется протокол LMTP. Он очень похож на SMTP и основные команды те же.
Начнем с dspam.conf. Конфиг не целиком, а то, что нас интересует с точки зрения перехода на LMTP. Настройка dspam расписана в статье http://www.lissyara.su/?id=1301
Код: Выделить всё
# Агент локальной доставки. Таким образом мы возвращаем проверенные на спам письма. Для доверенных пользователей и недоверенных.
TrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned"
UntrustedDeliveryAgent "/usr/local/sbin/exim -oMr spam-scanned"
## SOCKET. через него передается почта на проверку. Его и указываем в конфе почтовика.
ServerDomainSocketPath "/var/run/dspam.sock"
ClientHost "/var/run/dspam.sock"
# Если хотим посмотреть работу протокола, то раскоментируем эти строки. Как результат, dspam ожидает письмо на проверку не через сокет, а на #локалхосте на порту 24. Идем туда телнетом и пробуем отправить письма. Письмо будет проверено на спам и возвращено способом #TrustedDeliveryAgent. Если работает exim, то письма должно перейти на почтовик и доставиться адресату.
#DeliveryHost 127.0.0.1
#DeliveryPort 24
#DeliveryIdent localhost
#DeliveryProto LMTP
# LMTP без аутентификации. Судя мо манам, экзим не умеет LMTP аутентификацию, да и не надо..
ServerMode auto
# Включаем доставку через TrustedDeliveryAgent, когда принимает по LMTP. Точнее, добавляем ключи. Без них письмо не вернется обратно.
ServerParameters "--deliver=innocent -d %u"
# DEBUG. Если надо.
#DebugOpt: process, classify, spam, fp, inoculation, corpus
#Debug user
Код: Выделить всё
routers:
dspam_spamscan_router:
-transport = dspam_spamcheck_transport
+transport = lmtp
transports:
lmtp:
driver = lmtp
socket = /var/run/dspam.sock
batch_max = 20
user = mailnull
Да,кстати,не забываем собирать dspam с поддержкой запуска в качестве процесса.
На статью времени нет, так что кто хотит, может и до статьи добомбить.
Предложения-дополнения в студию!