У меня на нескольких почтовиках используется pop-before-smtp для того, чтобы пользователи могли отправлять почту из любого конца мира. Однако, одолел спам и захотелость нанести очередной удар. В очереди был milter-greylist. Собрал из портов, вставил что надо в .mc файл sendmail. Порадовался. И тут до меня дошло, что пользователи, который работают через pop-before-smtp получат при отправке облом в вида "Временно не доступно, зайдите со своего IP попозже".
Эх и вспомнил я Эрика Олмена добрым словом в 3 ночи! Вот оно:
Kpopauth hash -a<ok> /etc/mail/popauth<br /><br />SLocal_check_rcpt<br />R$* $: $(popauth $&{client_addr} $: $)<br />R$*<ok> $: $(storage {greylist} $@ OK $)<br />R$* $: $(popauth $&{client_addr} $: $)<br />R<?> $@ NoPopAuth<br />R$*<ok> $# OK<br /> </ok></ok><br /></ok>
Важно не забыть:
define(`confMILTER_MACROS_HELO', confMILTER_MACROS_HELO``, {verify}'') define(`confMILTER_MACROS_ENVRCPT', confMILTER_MACROS_ENVRCPT``, {greylist}'')
Не отношу себя к знатоками синтаксиса sendmail.cf, однако суть такова — если клиент находится в базе popauth.db, макросу по имени {greylist} назначается значение OK. Таким образом мы извращенным способом используем фичу milter-graylist access DB as a whitelisting source.