HowTos/SMTP Relay

出典: ScalixWikiJP

Scalix Wiki -> How-Tos -> HowTos/SMTP Relayの設定

目次

設定ファイル

SMTP Relayの設定は /var/opt/scalix/XX/s/sys/smtpd.cfg ファイルを編集することのより行うことができます。

設定ファイルの構成は次のようになっています。

全体設定
Catch-allの設定
中継の設定
[SUBMIT]
Submission(投稿)の設定
[LMTP]
LMTPの設定

編集して保存したら、次のコマンドを実行してSMTP Relayサービスを再起動させてください。

# omoff -d0 smtpd && omon smtpd

全体設定

EXTENSIONS

EHLOの応答で出力するESMTPの機能を記述します。

EXTENSIONS=AUTH,DSN,8BITMIME

DOMAIN_NAME

ローカルのホストのFQDNを記述します(省略可能)。

LOCAL_NAMES

DOMAIN_NAMEの別名を記述します(省略可能)。

MAX_HOP_COUNT

送られてきたメッセージに記述されているReceived:ヘッダの数がこの数を超えていたら中継を拒否します。 デフォルト値は0です。正の値でない場合は無限として解釈されます。 このデフォルト値はループの検出が中継では行われないことを意味します。 しかし、ループの検出はsendmailで行われるでしょう。

GREETING

接続時の220応答の際に表示するグリーティングの文字列です。 次の変数を使うことができます。

  • %F - FQDN
  • %p - プロトコル
  • %N - プログラム名
  • %V - バージョン
  • %D - 日付
GREETING=%F %P %D

LISTEN

リッスンするIPアドレスとポート番号をコンマ区切りで記述します。

LISTEN=mail.example.com:25,10.100.100.1:smtp

SUBMIT

投稿ポート用のSubmissionリスナーを有効にします。 設定は[SUBMIT]セクションで行います。

SUBMIT=ON

LMTP

LMTPリスナーを有効にします。 設定は[LMTP]セクションで行います。

LMTP=ON

SMTPFILTER

SMTP Relayがメッセージを受け取った後に、ScalixのInternet Mail Gatewayにメッセージを渡さずに、sendmailにメッセージを渡します。Scalixのメールアドレス宛であればsendmailから再度SMTP Relayに再投入され、Scalixのメールボックスに配送されます。

sendmailの機能(MILTERや/etc/aliases)を使いたい場合にこの機能を有効にします。

SMTPFILTER=TRUE

なお、/etc/aliasesを使いたい場合にはsendmailのローカル配送の設定(local-host-name)を行ってください。


MAX_MESSAGE_SIZE

最大メッセージサイズをバイトで指定できます。 指定したサイズを超えると552エラーで拒否します。 0を指定すると無制限になります。デフォルトは0です。

MAX_MESSAGE_SIZE=10000000

Catch-all受信者

Catch-all受信者はあて先不明のメールを配送しない代わりに捕らえるために使います。 複数行のCATCH行を記述することができます。 次の形式で記述します。

CATCH PATTERN RECIPIENT

PATTERNは次の形式です。

  • user* - userで始まるあて先不明のメールアドレス
  • @example.org - example.orgのあて先不明のメールアドレス
  • user*@example.org - example.orgにおけるuserで始まるあて先不明のメールアドレス

RECIPIENTはメールの転送先のメールアドレスです。これはローカルのメールアドレスでもリモートのメールアドレスでもよいです。ただし、リモートの場合は中継できることが条件となります。

中継の設定

次の形式で記述します。

イベント アクション パターン パターン ...

SMTP Relayはこのファイルに記述した順番でイベントやパターンに一致したかを調べます。 最初に一致したアクションが行われます。

イベント

AUTH_SUCCESS

認証に成功している。

AUTH_MISMATCH

認証に成功しているが、送信者名が認証に使われたログイン名と一致しない。

ANONYMOUS

認証無し、あるいは認証に失敗した後にメッセージが投稿されている。

SUBMIT

パターンに一致したホストからメッセージが投稿されている。

RELAY

SMTP Relayでメッセージを中継している。

ORIGINATOR

メールアドレスがパターンに一致しているユーザからメッセージが投稿されている。

RECIPIENT

メールアドレスがパターンに一致しているユーザ宛のメッセージが投稿されている。

アクション

Accept

メッセージを無条件に受け取り、正常処理する。

Defer

メッセージを400コードの一時エラーで拒否する。

Discard

メッセージは受け取るが、破棄する。

Header

メッセージを受け取るが、追加のヘッダを挿入する。

Reject

メッセージを500コードで拒否する。


"Log_"を追加したアクションで始まる場合は、そのアクションはSMTP Relayのログファイルに記録されます。

パターン

ホスト名のパターン

  • IPアドレス。例: 123.234.132.231
  • IP/サブネットマスク。例: 123.234.200.0/255.255.240.0
  • ホスト名。例: bert.example.org
  • ドメイン名の一部。例: .spammer.net
  • IPアドレスの一部。例: 123.234.
  • ALL。キーワードALLは全てのホストに一致する。
  • LOCAL。キーワードLOCALは"."を含まない全てのホストに一致する。

メールアドレスのパターン

ORIGINATOR と RECIPIENT で利用されます。"*"はワイルドカードとして使えます。

*@*.spam.example.org

DNSBLパターン

DNSブラックリストで使用するSUBMIT EVENTで使います。 DNSBLについては http://en.wikipedia.org/wiki/DNSBL を見てください。

  • DNSBL,host,reply 例: DNSBL,bl.spamcop.net,ALL

初期設定例

中継の設定に関しては次のような設定がデフォルトで行われています。

# NB Authenticated RELAYs are always allowed
RELAY accept 127.0.0.1
RELAY accept .example.org
RELAY Log_Reject ALL

# extra rules added to prevent open relay usage
RECIPIENT Log_Reject *@*@*
RECIPIENT Log_Reject *%*
RECIPIENT Log_Reject *!*
RECIPIENT Log_Reject *#*@*

SUBMITセクション

SUBMIT=ONで有効になります。

デフォルトでは次の設定が記述されています。

[SUBMIT]
#LISTEN=localhost:587
# Reject all anonymous connections
ANONYMOUS Log_Reject ALL

デフォルトでは587番ポートにバインドされています。

LMTPセクション

LMTP=ONで有効になります。

デフォルトでは次の設定が記述されています。

[LMTP]
LISTEN=localhost:24
# Use the following line to listen on a unix domain socket
#LISTEN=~/tmp/lmtp.unix