3.3.2 Sendmailの定義例

ここでは,「smtpgw.hitachi.co.jp」というドメイン名にメールを受信した時にmhs_mailerに転送する場合を例にして説明しています。

<この項の構成>
(1) 受信メールのアドレスをmhs_mailerが認識できるようにする定義
(2) mhs_mailerを起動するための条件の定義
(3) メーラの定義
(4) E-mailアドレスを書き換えるためのルールセットの定義

(1) 受信メールのアドレスをmhs_mailerが認識できるようにする定義

OperatorChars=.:%@!^[]+

OperatorCharsは,アドレス中の特殊文字を定義するオプションです。この記述では,「OperatorChars=」に続く各文字をアドレス要素(トークン)を区切る文字として認識するように定義しています。したがって,O/R形式のアドレスの'/'及び'='は区切り記号とはみなされなくなります。

(2) mhs_mailerを起動するための条件の定義

SendmailのCXマクロにmhs_mailerを起動するドメイン名定義を追加します。「smtpgw.hitachi.co.jp」というドメイン名宛てにメールを受信した時にmhs_mailerを起動する場合,次のCXマクロを設定します。

CX smtpgw.hitachi.co.jp

また,上記のCXマクロで設定したドメイン名宛てのメールを受信した場合に,「smtpgw」というメーラに転送することをルールセット0に設定します。

R$+<@$=X>       $#smtpgw $@$j $:$1<@$2>
R$+<@$=X.>      $#smtpgw $@$j $:$1<@$2>

(3) メーラの定義

ここでは,(2)で定義された「smtpgw」というメーラでメールを受信する場合に,起動するプログラムとしてmhs_mailerを定義します。また,mhs_mailerを起動するためのファイルパス名の指定や,起動時に指定する引数などを設定します。

Msmtpgw, P=/smtpbin/mhs_mailer, F=DxhFmMSu,
S=28/28, R=28/28, A=mhs_mailer $u

コンマで区切られた部分がそれぞれ定義項目になります。各項目の定義は次のようになります。

Msmtpgw
Mの次にメーラ名称を指定します。(2)の設定で指定するメーラ名と一致させる必要があります。
P=/smtpbin/mhs_mailer
起動するプログラムmhs_mailerの絶対パス名を指定します。
このパス名には,インストール先のディレクトリ名を含めて絶対パスを指定します。
F=DxhFmMSu
mhs_mailerの処理を定義したフラグ
F,M,Sは必ず指定してください。Mail - SMTPでエンベロープ送信者を取得する為,nは指定しないでください。Version 6 06-50以前のMail - SMTPを使用していた場合,nを削除してください。それ以外のフラグは,運用に応じて指定してください。
Xを指定した場合は,インターネットから受信したメールで「.」で始まる行が「..」で始まる行に変換されてしまいます。運用上「..」である必要があるという場合意外ではXフラグは指定しないでください。エンコード方法が以下の場合,本文/添付ファイルが正常にデコードできない場合があります。
  • 7bit
  • 8bit
  • quoted-printable
  • エンコード方法が指定されていない
9を指定した場合は,インターネットから受信したシングルパートのMIMEメールが8bitメールに変換されてしまう為,指定しないでください。
cを指定した場合は,コメントが削除されます。コメントをマッピングしたい場合にはcを指定しないでください。
S=28/28,R=28/28
送信者および受信者アドレスの書き換えルールセットの番号を指定します。ここでは使用するルールセットとしてルールセット28を適用することを指定しています。ルールセット28は「3.3.2(4) E-mailアドレスを書き換えるためのルールセットの定義」で定義します。
A=mhs_mailer $u
メーラの起動時に必要な引数を定義しています。$uは受信者のアドレスを示すマクロです。

(4) E-mailアドレスを書き換えるためのルールセットの定義

ここでは,(3)で定義されたルールセット28のアドレス変換定義を追加します。(3)の設定で指定するルールセット番号と一致させる必要があります。

S28
R$-          $@$1<@$j>
R$+<@$+.>    $1<@$2>

このルールセットによって,E-mailアドレスにドメインパートを含むように書き換えます。また,E-mailアドレスのドメインパートの終わりに付加されているドットを削除します。