qpopper や dovecot などの POP サーバでは各ユーザのメールボックスは
1 つのファイルとして管理されている。
例えば、test1 と test2 というユーザが存在する場合、
RedHat や CentOS などの Linux システムのデフォルトでは、
次のようなファイルがメールボックスとなる。
/var/mail/test1 /var/mail/test2
実際に test1 宛にメールが届いている状態で /var/mail/test1 を確認してみる。
今回使用した環境は、OS が CentOS 5 で POP サーバに dovecot を使用している。
# cat /var/mail/test1 From MAILER_DAEMON Tue Feb 12 06:58:16 2007 Date: Tue, 12 Feb 2007 06:58:16 +0900 From: Mail System Internal Data <MAILER-DAEMON@test.centos> Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA Message-ID: <1202767096@test.centos> X-IMAP: 1202761369 0000000020 Status: RO This text is part of the internal format of your mail folder, and is not a real message. It is created automatically by the mail system software. If deleted, important folder data will be lost, and it will be re-created with the data reset to initial values. From test00@test.example Sat Feb 23 19:53:16 2007 Return-Path: <test00@test.example> Received: from [1.1.1.3] (test000.test.example [1.1.1.3]) by test.centos (8.13.8/8.13.8) with ESMTP id m1NArGM7003551 for <test1@test.centos>; Sat, 23 Feb 2008 19:53:16 +0900 Message-ID: <48055B31.80704@test.example> Date: Wed, 16 Apr 2008 10:49:37 +0900 From: nadmin <test00@test.example> User-Agent: Thunderbird 2.0.0.12 (Windows/20080213) MIME-Version: 1.0 To: test1@test.centos Subject: test1 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit test
内容を見てみると、黄色色付け部分は dovecot の管理用のフィールド。
それ以降が実際に届いているメールの内容。
管理用のフィールドとは空行で区切られており、
メールのヘッダ情報が続いた後、 再度空行をはさんで本文 「 test 」 があり、
空行で終了。
つまり、「From 送信元 送信日付」で始まるメールの内容を
空行で区切っているだけ。
この性質を理解していれば
POP サーバのメールボックスに直接メールを書き込むことは簡単。
最低限必要な項目のみでメールを書き込むとすると以下のようになる。
From メールの仮の送信元 Sat Feb 10 10:10:10 2007 From: 受信側に見せたい送信元 To: 受信側に見せたい送信先 Subject: 受信側に見せたい件名 空行 本文 空行
「From メールの仮の送信元 Sat Feb 10 10:10:10 2007」 はメールクライアントで
受信した際にどこにも表示されません。
このようにして直接書き込んだメールも
メールクライアントでちゃんと受信することができる。
さらに、受信したらサーバから削除するように設定していれば受信後削除もされる。
これを利用すればシステムログのチェック結果などを本文として
上記の形式でメールボックスに書き込んでおき、
管理者がメールとして受信することができる。
これにより管理者はシステムログのチェック結果を
メールクライアントを利用して管理することができる。
ちなみに、シェルスクリプトではこんな感じ。
#!/bin/sh echo "From メールの仮の送信元 Sat Feb 10 10:10:10 2007" >> /var/mail/test1 echo "From: 受信側に見せたい送信元" >> /var/mail/test1 echo "To: 受信側に見せたい送信先" >> /var/mail/test1 echo "Subject: 受信側に見せたい件名" >> /var/mail/test1 echo "" >> /var/mail/test1 cat [ ログチェック結果などを記載したファイル ] >> /var/mail/test1 echo "" >> /var/mail/test1
当然ながら、実際にメールをやり取りするわけではないので、
「From:」 や 「To:」 は任意で構わない。
Thunderbird がメール本文を自動修正する