
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 バックエンドを使用しています (もちろん、同じ構成ファイルからコピーして貼り付けたものです)。ポイントは、「from」、「to」、「subject」、および「text」変数を設定することです。自動返信トランスポートは、これらを使用して返信メールを作成します。送信者にユーザーの不在を通知する必要がある場合は、検索を削除し、ほとんどの場合、静的テキストを含めることができます。繰り返しますが、この例は休暇メールに関するもので、ユーザーはメッセージをカスタマイズできます。
自動返信ドライバーについては、次のページを参照してください。 http://wiki.exim.org/EximAutoReply
また、exim ドキュメントも便利です。
答え2
メールボックスを削除すると、メールボックスが存在しないという内容の返信メールが送信されると思います。