Linuxメールサーバ上で, 送られて来た電子メールの添付ファイルを自動で保存する方法をメモする.
Pythonのスクリプトを以下のように用意する.
#! /bin/env python
import sys
import email
import re
import os
re_fname = re.compile('[^\./][^/]*\.[a-zA-Z0-9]*$') # この箇所は適宜修正をすること.
dest_dir = '/home/hoge/email/' # 保存先のディレクトリ
msg = email.message_from_string(sys.stdin.read())
for part in msg.walk():
fn = part.get_filename()
if not part.is_multipart() and fn and re_fname.match(fn):
print dir(part)
fp = open(os.path.join(dest_dir, fn), 'wb')
fp.write(part.get_payload(decode=True))
fp.close()
上記のスクリプトを
~/Maildir/attach2file.py
という名前で保存した場合,
.procmailrc
に以下のように記述する.
:0c
*^Content-Type: multipart
| $HOME/Maildir/attach2file.py
なお, re_fnameの箇所は,
..
など他のディレクトリへファイルを書き込まれないようにするなどセキュリティに配慮して記載する.