运行 exim4 时,我无法弄清楚如果某个地址(即将离开公司的用户的地址)收到邮件,如何向发件人发送通知消息。
答案1
您可以使用“自动回复”驱动程序发送自动回复消息。它通常用于发送休假消息,但它当然能够回复任何类型的邮件。
大致来说,您需要一个路由器,它(根据某些条件)使用自动回复驱动程序将消息重定向到传输。路由器如下所示:
vacation_reply:
driver=accept
domains = +local_domains
senders = ! ^.*-request@.*:\
! ^bounce-.*@.*:\
! ^.*-bounce@.*:\
! ^owner-.*@.*:\
! ^postmaster@.*:\
! ^webmaster@.*:\
! ^listmaster@.*:\
! ^mailer-daemon@.*:\
! ^root@.*:\
! ^noreply@.*
condition=${lookup mysql {\
select email from vacation where \
email='${quote_mysql$local_part}@${quote_mysql:$domain}'\
and active='y'\
}}
no_expn
transport=vacation_transport
unseen
no_verify
上面的路由器是关于假期的片段,但重写它应该没有问题。此外,它使用 mysql 作为后端,因此如果您使用文件等,您的配置会略有不同,但您明白了...
有了路由器,您就需要一个传输(在此示例中,它被称为“vacation_transport”),它是这样的:
vacation_transport:
driver=autoreply
from= ${lookup mysql {\
select concat('"',name,'" <',username,'>') \
from mailbox where username='${local_part}@${domain}' AND active=1 \
}}
to= ${lookup mysql {\
select '${quote_mysql:$sender_address}' \
from vacation where email='${local_part}@${domain}' and active='y' \
}}
subject= ${lookup mysql {\
select subject from vacation \
where email='${local_part}@${domain}' and active='y' \
}}
text= ${lookup mysql {\
select body from vacation \
where email='${local_part}@${domain}' and active='y' \
}}
同样,它使用 mysql 后端(它是从同一个配置文件复制粘贴的,ofcoz)。重点是设置“发件人”、“收件人”、“主题”和“文本”变量。自动回复传输将使用这些变量来撰写回复邮件。如果您需要通知发件人用户缺席,您可以删除查找,并且在大多数情况下您可以包含静态文本。同样,这个例子是关于休假邮件的,用户可以自定义他/她的消息。
请参阅有关自动回复驱动程序的此页面: http://wiki.exim.org/EximAutoReply
此外,进出口文件也很有用。
答案2
我认为当您删除邮箱时它会发送一个退回邮件,说该邮箱不存在。