我测试我的电子邮件服务器的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只运行一个电子邮件,而不是所有收件人域。 我希望正确解释我的问题: - )
答案 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