> From: Victor Sudakov

> > ÞÔÏÂÙ ËÏÍÁÎÄÙ ×ÙÚÙ×ÁÌÉÓØ × ÎÕÖÎÏÊ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÉ, ÍÏÖÎÏ
> > ÉÚ ÅÄÉÎÓÔ×ÅÎÎÏÇÏ ÔÒÁÎÓÐÏÒÔÁ ×ÙÄÁÔØ /bin/sh -c 'mkdir...; uu...'
> 
> á ËÁË ×ÎÕÔÒØ ËÁ×ÙÞÅË ÐÅÒÅÄÁ×ÁÔØ ${local_part} É ÄÒÕÇÉÅ ÐÅÒÅÍÅÎÎÙÅ? 

root ÎÁ lena:/# exim -be '${run{/bin/sh -c "echo spool: $spool_directory"}}'
spool: /var/spool/exim

æÉÇÕÒÎÙÅ ÓËÏÂËÉ, ÅÓÌÉ ÎÕÖÎÙ, ÎÁÄÏ ÚÁËÌÀÞÁÔØ × \N \N .
õ ÍÅÎÑ ×ÏÔ ÔÁËÁÑ ËÏÎÓÔÒÕËÃÉÑ Ó ËÁ×ÙÞËÁÍÉ É ÐÅÒÅÍÅÎÎÙÍÉ × ACL
(× ÔÒÁÎÓÐÏÒÔÅ ÎÁÄÏ ÐÒÏÂÏ×ÁÔØ):

LIM = 100
PERIOD = 1h
WARNTO = abuse ÎÁ example.com
EXIMBINARY = /usr/local/sbin/exim
SHELL = /bin/sh
...
acl_check_rcpt:
...
  accept authenticated = *
        set acl_m_user = ${sg{$authenticated_id}{\N\W.*$\N}{}}
        condition = ${if exists{$spool_directory/blocked_users}}
        condition = ${if eq{${lookup{$acl_m_user}lsearch\
                    {$spool_directory/blocked_users}{1}{0}}}{1}}
        control = freeze/no_tell
        add_header = X-Authenticated-As: $acl_m_user

  accept authenticated = *
        !verify = recipient/defer_ok/callout=10s,defer_ok,use_sender
        ratelimit = LIM / PERIOD / per_rcpt / user-$acl_m_user
        continue = ${run{SHELL -c "echo $acl_m_user \
           >>$spool_directory/blocked_users; \
           \N{\N echo Subject: user $acl_m_user blocked; echo; echo because \
           has sent mail to LIM invalid recipients during PERIOD.; \
           \N}\N | EXIMBINARY WARNTO"}}
        control = freeze/no_tell
        add_header = X-Authenticated-As: $acl_m_user

  accept authenticated = *
        condition = ${if !={$received_port}{25}}
        control = submission/domain=

Ответить