次のページ 前のページ 目次へ

4. e-mailの配送

電子メールの配送は"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を使います。

4.1 特定の時間にメールを配送するには?

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

訳文に関する間違い、不明な点があればご連絡下さい。]


次のページ 前のページ 目次へ