每个域的后缀内容过滤器

时间:2013-12-04 10:38:50

标签: postfix-mta

我测试我的电子邮件服务器的postfix。 我必须对所有电子邮件进行内容过滤。

master.cf

smtp       inet  n       -       n       -       -       smtpd -o content_filter=dfilt:
................
dfilt     unix  -       n       n       -       -       pipe
   flags=Rq user=vmail:vmail argv=/opt/test/control.sh  -f ${sender} ${recipient}

当用户发送给相同域的收件人时,control.sh是一次运行 但是用户发送给收件人不同的域名control.sh是按域运行的。 所以control.sh很多运行同一个电子邮件。我这不是因为不必要的工作

我们可以控制.sh只运行一个电子邮件,而不是所有收件人域。 我希望正确解释我的问题: - )

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您必须抓住所有收件人地址,将它们放入数组中,然后您可以根据域名处理每封电子邮件

因此,在您的control.sh中,您可以添加以下内容:

cap_to_address=`echo $@ |awk '{$1=$2=$3=""; print $0}'`
to_address=( $cap_to_address )
count=${#to_address[@]}

for i in `seq 1 $count`
 do
  to_domain=`echo ${to_address[$i-1]} | grep -o '[^@]*$'`
  # YOUR IF STATEMENT 
  # For eg:
  if [ $to_domain == mydomain.com ]; then
    echo "this is my domain: $to_domain"
  else
    echo "this is not my domain: $to_domain"
  fi
done