attention
なお、知識が浅いので改善できるところがあると思います。そこら辺はご自分で頑張ってください。 また、この文章を参考等にしたおかげで酷いことになっても私は一切の責任を負いません
description.
このprocmailを使う転送はただの転送ではなく返信すると あたかも転送メイルアカウントから出されたかのように振舞える転送です。
- ugoo@forwarder.jpという転送アドレスにgaogao@mailsenders.ne.jpの人がメイルを出したとします。
- そうするとそのメイルはauau@hogehoge.gr.jpに転送されます。
- 普通の転送メイルはこれに返信するとgaogao@mailsenders.ne.jpにはauau@hogehoge.gr.jpから送信されたようになります。
- しかし、このprocmailを使った方法で転送してそれに返信するとugoo@forwarder.jpから出されたように見えます。
internal
この例では拡張アドレスのデリミタは+に設定してあるものとします。
転送アドレス(ugoo@forwarder.jp)に届いたメイルのFrom(gaogao@mailsernders.ne.jp)を 拡張アドレスを使用した形式(ugoo+gaogao=mailsernders.ne.jp@forwarder.jp)に書き換えて< 送信先(auau@hogehoge.gr.jp)に転送します。
それを返信するといったんugoo@forwarder.jp宛てに届きます。(配送アドレスとしては+以降は無視される) そこでprocmailを使ったりして+以降からgaogao@mailsenders.ne.jpを取り出し、 Fromを転送アドレス(ugoo@forwarder.jp)に、Toを送信先(gaogao@mailsenders.ne.jp)に書き換えて転送します。
ここではprocmailとPostfixが入っているものとして最低限の設定の説明をします。
- 転送アドレス
- ugoo@forwarder.jp
- 送り主
- gaogao@mailsenders.ne.jp
- 転送先
- auau@hogehoge.gr.jp
----
/etc/postfix/main.cf
(中略)
# ADDRESS EXTENSIONS (e.g., user+foo)
recipient_delimiter = +
(以下略)
----
~/.forward
|/usr/local/bin/procmail
----
~/convalias.sh
#!/bin/sh
formail -rt -xTo: | perl -l -n -e 's/\s//gi;s/\@/=/; print "ugoo+" . $_ . "\@forwarder.jp"'
----
~/.procmailrc
PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$HOME/procmail.lock
SENDMAIL=/usr/sbin/sendmail
# 送信時は拡張アドレスから逆に送信先アドレスを取り出す。
# 例: ugoo+gaogao=mailsenders.ne.jp@forwarder.ne.jp から gaogao@mailsenders.ne.jp に。
DELIVER=`perl -n -e 'if (/^Delivered-To:\s.*?\+(.*?)\@.*?/i){$_=$1;s/=/\@/;print;exit;}'`
# 受信時Fromヘッダを拡張アドレスを使用する形式。
# Fromのgaogao@mailsenders.ne.jp が gaogao=mailsenders.ne.jp に変換され、
# さらにFromを拡張アドレスを使用した形式で書き換えます。
# From: ugoo+gaogao=mailsenders.ne.jp@forwarder.jp
FROM=`~/convalas.sh`
# 転送先アドレス。
FORWARD=auau@hogehoge.gr.jp
# 転送アドレス。
ADDRESS=ugoo@forwarder.jp
# MAILER-DAEMONからのメイルは転送先に直送。
:0
* From:.*MAILER-DAEMON@.*
! auau@hogehoge.gr.jp
# 送信時の処理です。
# From(転送アドレス)とTo(送信先)を書き換えてそのまま転送します。
:0
* !^X-Loop: $ADDRESS
* ^To: ugoo\+.*\@forwarder\.jp$
| (formail -A "X-Loop: $ADDRESS" \
-I "To: $DELIVER" \
-I "From: $ADDRESS" \
-I "Reply-To: $ADDRESS" \
-I "Received:" \
-I "X-Moe: =?iso-2022-jp?B?GyRCP0BIeDRRTmsbKEI=?=")\
| $SENDMAIL -i $DELIVER
# 受信時
# From(書き換えた拡張アドレス)とTo(転送先)を書き換えてそのまま転送します。
:0
*
| (formail -A "X-Loop: $ADDRESS" \
-I "To: $FORWARD" \
-I "From: $FROM" \
-I "Return-Path: $FROM"
-I "Reply-To: $FROM") \
| $SENDMAIL -i $FORWARD