Настройка почтовой системы Sendmail

Для настройки взаимодействия между почтовой системой Sendmail и Dr.Web MailD необходимо внести изменения в конфигурационные файлы sendmail.mc и sendmail.cf.

Если пересобирать конфигурационный файл sendmail.cf нежелательно, можно просто вставить в него или добавить (если соответствующие определения в файле уже есть) следующие строки:

Для версий 8.14.0 и выше:

############################
# Input mail filters
############################
O InputMailFilters=drweb-milter
O Milter.LogLevel=6
############################
#   Xfilters
############################
Xdrweb-milter, S=__ADDRESS__,
F=T,T=C:1m;S:5m;R:5m;E:1h

Чтобы иметь возможность проверять сообщения, отправленные локально (через вызов mail или sendmail), необходимо продублировать все изменения, сделанные в файле sendmail.cf, в файлы submit.cf и submit.mc.

Пожалуйста, обратите внимание, что по умолчанию файлы submit.cf и submit.mc защищены от записи, поэтому прежде, чем добавлять в них строки, необходимо изменить права доступа к этим файлам, разрешив запись в них. Кроме того, необходимо добавить к параметру O PrivacyOptions значение nobodyreturn.

Пример:

# privacy flags
O PrivacyOptions=goaway,noetrn,nobodyreturn

Или в {sendmail_src}/cf/cf/feature/msp.m4:

define(`confPRIVACY_FLAGS'
`goaway,noetrn,nobodyreturn,restrictqrun')

Для случая, когда фильтр недоступен, установите следующие флаги (F=):

R - отказать в доставке;

T - временно отложить доставку.

Если ни F=R, ни F=T не указаны, то сообщение пропускается без проверки.

Также можно добавить в sendmail.mc следующие строки:

Для версий 8.14.0 и выше:

INPUT_MAIL_FILTER(`drweb-milter', `S=__ADDRESS__,
F=T, T=C:1m;S:5m;R:5m;E:1h')
define(`confMILTER_LOG_LEVEL',`6')

Величину времени ожидания лучше выбирать в соответствии с величинами времени ожидания Sendmail:

O Timeout.datablock=XX

(по умолчанию эта величина равна 1 часу, XX=>1h).

После внесения изменений файл sendmail.cf необходимо пересобрать.

__ADDRESS__ - строка, задающая адрес транспорта для подключения модуля drweb-milter. Она имеет формат и значение, идентичные формату и значению параметра Address секции [Milter] конфигурационного файла Dr.Web MailD.

Для TCP-сокетов адрес задается в формате:

inet:__PORT__@__HOST__

где __PORT__ и __HOST__ должны иметь конкретные значения (например, inet:3001@localhost).

Для UNIX-сокетов адрес задается в формате:

local:__SOCKPATH__

где __SOCKPATH__ должен указывать путь, доступный с теми правами, с которыми будет запущен фильтр (наример, local:/var/run/drweb-milter.sock).

Тонкости настройки фильтра можно найти в документации на Sendmail. После установки всех необходимых параметров следует перезапустить Sendmail.

Чтобы модуль drweb-maild мог при выводе сообщений в лог указывать идентификаторы почтовых сообщений Sendmail (sendmails message ID).  Также для передачи модулю drweb-maild информацию об успешной авторизации, в файле sendmail.cf должна присутствовать следующая строка:

O Milter.macros.envfrom=i,{auth_type}, ...

(многоточием обозначены остальные параметры, значение которых не важно).

Чтобы Dr.Web MailD мог определить IP-адрес и имя хоста, от которого принято сообщение, а также мог передавать модулю drweb-maild адрес интерфейса, на который было принято письмо, в файле sendmail.cf должна присутствовать следующая строка:

O Milter.macros.connect=_,{if_addr}, ...

(многоточием обозначены остальные параметры, значение которых не важно).

Для подавления вывода в syslog сообщений вида:

X-Authentication-Warning: some.domain.com: drweb set sender to DrWeb-DAEMON@some.domain.com using -f

необходимо внести того пользователя, от имени которого работает drweb-milter (по умолчанию - drweb) в список trusted-users в файле submit.cf.

Это можно сделать, добавив пользователя в список непосредственно в файлах submit.cf и sendmail.cf:

#####################
#  Trusted users    #
#####################
Tdrweb

Либо добавив в файл submit.mc строку:

define(`confTRUSTED_USERS', `drweb')