Пример конфига мильтера, пардон за аглицкий, ну перло меня повыпендриваться :-)
------------------------------------------------------------------------
# Configuration file for sentinel "sendmail milter".
# ------------------------------------------------------------------------
# I-net mail authorization.
# This milter configuration checks mail headers(EnvelopeFrom:,
# EnvelopeRcpt:) and accepts or rejects mail message depending on
# given rules.
# Milter configured as below is intended to operate as second-in-line.
# First-in-line milter should deal with SPAM.
# Functions:
# 1. Accept mail from corporate to corporate domains by default.
# 2. Accept mail to I-net from corporate senders
# stated in /var/acls/outwhitelist.lst.
# 3. Accept mail from I-net to corporate recipients
# stated in /var/acls/inwhitelist.lst.
# 4. Unconditionally accept mail to\from administrators stated in
# /var/acls/admins.lst
# 5. Reject all other mail from\to I-net by default
# -----------------------------------------------------------------------
[global]
<skipped>
[headers]
EnvelopeRcpt:
# Process recipient of the mail
# -----------------------------
# Reject all mail to I-net by default. Mail to I-net is defined as
# recipient non-matching corporate domains regex.
# Mail to I-net from allowed senders will be accepted by
# rule 'fromallowed' in 'EnvelopeFrom:' section below
# ('accept' has precedence over 'reject').
# Mail to I-net from admins will be accepted by rule 'fromadmin' in
# 'EnvelopeFrom:' section below ('accept' has precedence over 'reject').
# Mail from corporate to corporate domains will be accepted by default
# as far as no 'rejecting' etc. rules for such mail are stated - message
# without evident actions like reject\accept etc. is accepted.
killout:killout:quarantine(rejectout):/тут regex корпоративных доменов/in
# Accept mail to admins
toadmin:toadmin:admins(accepta):/.*/i
# Accept mail to allowed recipients
toallowed:toallowed:allowin(accepta):/.*/i
EnvelopeFrom:
# Process sender of the mail
# --------------------------
# Reject all mail from I-net by default. I-net mail is defined as
# non-matching corporate domains regex.
# Mail from I-net to allowed recipients will be accepted by
# rule 'toallowed' in 'EnvelopeRcpt:' section above
# ('accept' has precedence over 'reject').
# Mail from I-net to admins will be accepted by rule 'toadmin' in
# 'EnvelopeRcpt:' section above ('accept' has precedence over 'reject').
# Mail from corporate to corporate domains will be accepted by default
# as far as no 'rejecting' etc. rules for such mail are stated - message
# without evident actions like reject\accept etc. is accepted.
killin:killin:quarantine(rejectin):/тут regex корпоративных доменов/in
# Accept mail from admins
fromadmin:fromadmin:admins(accepta):/.*/i
# Accept mail from allowed senders
fromallowed:fromallowed:allowout(accepta):/.*/i
[actions]
null:null
accept:accept
accepta:accept
reject:reject
rejectout:reject:No rights to send mail outside
# rejectin:reject:Mail from outside blocked. Contact postmaster if this affects Your business
rejectin:discard
allowin(accepta):acl:/var/acls/inwhitelist.lst
allowout(accepta):acl:/var/acls/outwhitelist.lst
admins(accepta):acl:/var/acls/admins.lst
discard:discard
quarantine(rejectout):quarantine:/var/mailquarantine/%Y%m%d-out
quarantine(rejectin):quarantine:/var/mailquarantine/%Y%m%d-in
----------------------------------------------------------------------
Ну а подключено это дело как обычно.
Фрагмент sendmail.mc :
--------------------------------------------------
<skipped>
INPUT_MAIL_FILTER(`antispam', `S=inet:3003@localhost')
INPUT_MAIL_FILTER(`cop', `S=inet:3002@localhost')
INPUT_MAIL_FILTER(`drweb-filter', `S=inet:3001@localhost, F=T, T=C:1m;S:5m;R:5m;E:1h')
define(`confINPUT_MAIL_FILTERS', `drweb-filter,antispam,cop')
dnl define(`confMILTER_LOG_LEVEL',`6')
define(`confMILTER_LOG_LEVEL',`1')
<skipped>
-------------------------------------------------
cop - это мильтер, сконфигурированный как указано выше.
antispam - это отдельная песня, в данном случае сделано на том же мильтере sentinel, но с другой конфой.
Ну а дрвеба все знают :-). Вот так в связке сосисок-мильтеров и пашеть.
Все мильтеры должны быть запущены перед сендмылом, после внесения изменений в список разрешенных адресов мильтер\мильтеры надо перестартовать, чтобы перечитали списки. В конфигурации подключения мильтеров как выше желательно после этого перестартовать и сендмыл, потому как не заданы флаги F & T, в результате чего ежели сендмылу мильтер понадобится в момент его перестартовки и отсутствия, такой мильтер будет переведен в состояние ошибки и будет игнорироваться в дальнейшем, хоть уже и будет висеть в памяти перестартованным.
В таком вот виде пара серверов под фрей пашет более года - нареканий пока нету.