(無償) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

2016年12月26日月曜日

【Linux CentOS 6.7 64bit】いったんMailDir形式で受信したメールを再び任意のアドレスで送信する方法について(受信済みメールの再送信方法)


ターゲットのメールをMailDir方式で受信している場合、newディレクトリや、curディレクトリなどにメールごとにファイルで存在している。

このメールファイルは、メールソフトによる「未読」「既読」によって、次のように保存された。

未読の場合、newディレクトリに保存
既読の場合、curディレクトリに保存

たとえば、目的のメールが未読状態であれば、newフォルダに保存されている。
newフォルダ内に移動した。
# cd new

# cat 1402730122.M974340P2400.mail\,S\=4000\,W\=4100 | formail -k -X From: -X Subject: -X Message-Id: -X Date: -X To: | sendmail -t testto@resending-to-address -f from@mydomain


上記コマンドは、次の手順で処理を行っている。

1、目的のメールをcatコマンドで読み取って、標準出力からformailコマンドに渡す。
2、formailコマンドによってメールを加工し、必要なヘッダーとボディを取り出す。
3、そうして、sendmailコマンドで再送信先と送信元を指定して送信処理を行う。

formailコマンド(オプション付)では、必要なヘッダーとボディのみ取り出している。

メール本体の、Toヘッダーの内容も書き換えるには次のようにして指定すると良かった。
-I To:testto@re-sending-to-address
また、必要に応じて、CCヘッダーなどもオリジナルメールから取り出すようにすると良い。



<参考>
・Resend mail that’s locally stored in a mbox format on a Linux box to a working email address
< http://giantdorks.org/alain/resend-mail-thats-locally-stored-in-a-mbox-format-on-a-linux-box-to-a-working-email-address/ > 2016年12月26日

・How can i send /var/mail/root again?
< http://serverfault.com/questions/90023/how-can-i-send-var-mail-root-again > 2016年12月26日

・formail
< http://linuxcommand.org/man_pages/formail1.html > 2016年12月26日

・Maildirの仕様について
< http://ijo.cc/it/ja/server/maildir_spec/ > 2017年1月8日