Sendmail Authinfo

Intro

スパムメール等の対策として, メール送信時になんらかの方法 (SMTP AUTH や POP before SMTP など) による認証を必要とするプロバイダが増えています. *NIX を使用する場合, sendmail このページでは, sendmail を使用して SMTP AUTH による認証が必要なホストへリレーするための設定について説明しています. 自ホストで SMTP AUTH による認証を行うための設定については説明していませんのでご注意ください.

sendmailSMTP AUTH による認証が必要なホストへメールを送信する場合, authinfo から認証に必要な情報を取得します. 認証は, Cyrus SASL ライブラリを使用して行います.

なお, sendmail 自体の設定方法については説明していません. また, このページに従って設定を行った結果により発生したいかなる事態についても当方では責任を負いません. 必ず各自の責任の下に行ってください.

Cyrus SASL

authinfo を使用して SMTP AUTH を行う場合、Cyrus SASL をリンクした sendmail が必要になります。ソースからビルドする場合、以下の設定を site.config.m4 に指定しコンパイルしてください。

例 1. Cyrus SASL version 1 をリンクする場合

APPENDDEF(`confENVDEF', `-DSASL')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl')

例 2. Cyrus SASL version 2 をリンクする場合

APPENDDEF(`confENVDEF', `-DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lsasl2')

SASL については、SASL: Simple Authentication and Security Layer を参照してください。

authinfo

authinfo ファイルには、以下の形式で認証情報を記述します。

AuthInfo:SERVER_ADDR ["TDstring" ...]

SERVER_ADDR には、SMTP AUTH を必要とするホストを指定します。"TDstring" は、T (種類) D (デリミタ) string (文字列) からなる認証に必要となるデータで、必要個繰り返し指定します。

T (種類) には、以下の一つを指定します。

U
ユーザ ID
I
認証 ID
P
パスワード
R
レルム
M
認証メカニズム (複数個指定する場合は、空白により区切る)

D (デリミタ) には、:= を指定します。: の場合 string が文字列であることを示し、= の場合 string が BASE64 エンコードされた文字列であることを示します。

ユーザ myname、認証 ID myname@other.dom、パスワード password、ホスト other.dom へ CRAM-MD5 を使用して認証を行う場合、authinfo に以下のように記述します。

例 3. authinfo

AuthInfo:other.dom "U:myname" "I:myname@other.dom" "P:password" "M:CRAM-MD5"

sendmail.cf

authinfo を記述した後、sendmail.cfauthinfo を有効にする必要があります。sendmail に付属している cf.m4 を使用する場合、以下を m4 ファイルに指定します。

例 4. Macro configuration for authinfo

FEATURE(authinfo, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo')

genericstable, genericsdomain

authinfo と直接は関係ありませんが、DHCP によるダイアルアップやブロードバンド接続を行っている場合、ローカルホスト名をマスカレードする必要があります。ユーザごとにマスカレードするホスト名を指定する場合、genericstable ファイルと genericsdomain ファイルを使用します。

genericsdomain には、マスカレードするドメインを 1行ずつ記述します。自ホスト名を example.com とした場合、以下のようになります。

例 5. genericsdomain

localhost
example
example.com

genericstable には、マスカレードするアドレスとマスカレード後のアドレスをペアで1行に記述します。ローカルユーザ user1 を user1@example.org へマスカレードする場合、以下のように記述します。

例 6. genericsdomain

user1       user1@example.org

genericstablesgenericsdomain を有効にするには、m4 ファイルに以下を指定します。

例 7. Macro configuration for generics*

FEATURE(genericstable,DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`genericstable')
GENERICS_DOMAIN_FILE(MAIL_SETTINGS_DIR`genericsdomain')
FEATURE(`masquerade_envelope')
FEATURE(`generics_entire_domain')