電子メールの配送は"sendmail -q"コマンドを実行することで 行われます。sendmailが行っていることに興味がある人は "sendmail -q -v"とすれば配送プロセスの経過を表示してくれます。
[-v
オプションを付けてsendmailを実行すると、
Running RAA18307 (sequence 1 of 3) <user@mail.server.or.jp>... Connecting to mail.server.or.jp. via smtp... 220 sv220.tk.mmm.ad.jp ESMTP Sendmail 8.8.4+2.7Wbeta4/3.5Wpl1-97120410; Thu >>> EHLO your.server.name.jp 250-sv220.tk.mmm.ad.jp Hello city1DU22.mmm.ad.jp [000.000.000.000], ple 250-8BITMIME 250-SIZE 250-DSN 250-ONEX 250-ETRN 250-XUSR 250 HELP >>> MAIL From:<user@mail.server.or.jp> SIZE=5 250 <user@mail.server.or.jp>... Sender ok >>> RCPT To:<user@mail.server.or.jp> 250 <user@mail.server.or.jp>... Recipient ok >>> DATA 354 Enter mail, end with "." on a line by itself >>> . 250 RAA15115 Message accepted for delivery <user@mail.server.or.jp>... Sent (RAA15115 Message accepted for delivery)といったメッセージが出力されます。cronで実行されると出力結果などが メールで送信されるので確認などできます。
メールがロックされて"sendmail -q -v"としても送信されない
ケースがあります。これは、/etc/rc.d/rc.M
で設定している
sendmailに-q
オプションを設定していたり、メーラでbodyを書いている
時に"sendmail -q"が実行されロックされるなど原因は様々です。
何かよい解決方法があれば教えて下さい。
/var/spool/mqueue
以下にメールはキューされています。そのファイルの
中でサイズが0byteのものがあるとそのメールはロックされています。
送信されないメールは1週間すると送信者にリターンされます。
/var/spool/mqueue
以下のメールファイルで、頭2文字が
qfのものはヘッダファイル、dfのものはbody、xfはロックされている時にある
ファイルです。頭2文字以下の名前はMessage Id
などで表示されるもの
です]
メール配送のプロセスを自動化することは簡単です。これにはcronを使います。
crontabを編集します:
crontab -e
以下のフォームを追加します:
05 18-23,0-7 * * Mon,Tue,Wed,Thu,Fri /usr/sbin/sendmail -q
05 * * * Sat,Sun /usr/sbin/sendmail -q
詳細についてはcrontabのmanページを参照してください
("man 5 crontab"で参照できます)。フォーマットはもう明らかです。
上で書かれたcrontabエントリの例では、(メールがキューにある時のみ)メールを
各曜日の各時間5分後(午後6:05にスタートし午前7:05にストップ)に送信します。
また週末には各時間5分後にメールが配送されます(土曜日の午後12:05にスタートし
日曜日の午後11:05にストップ)。
ダイアルオンデマンドユーザーとして、特定の時間にPOP3プロトコル経由でメールを 受信したいと思うことがあります。そこで以下のエントリを同じようにcrontabに 追加します。
0 21 * * * popclient -3
-u <あなたのPOP3ユーザー名>
-p <あなたのパスワード>
-o /var/spool/mail/<受信したメールを受けるシステム上のユーザー名>
<mailhost.somedomain.com>
もちろんこれは一行で書かれます。ファイルに保存しエディタを終了させます。
crontabはこれでインストールされます(訳注:popclientを使うよりもfetchmail
などを使ったほうがセキュリティ上よいと思います)。
[訳者:伊佐冶 哲, isaji@mxu.meshnet.or.jp
訳文に関する間違い、不明な点があればご連絡下さい。]