2018-01-19

Postfix+Procmail: 電子メールの添付ファイルを自動で保存する方法

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の箇所は, ..など他のディレクトリへファイルを書き込まれないようにするなどセキュリティに配慮して記載する.

0 件のコメント:

コメントを投稿