ここでは、コネクションフィルタに含まれる2つの機能(IPフィルタ機能、SMTPフィルタ機能)について説明します。
IPフィルタ機能は、MIMEゲートウェイのSMTPレスポンダスレッドへの接続を制限する機能です。接続に関する制限機能としては、"8.8 外部からの接続制限"で説明した「allow_ip_address」と「no_relay」がありますが、この機能はそれを拡張したものです。
この機能では、外部からSMTPレスポンダへの接続に対して、IPアドレスをチェックすることにより、「接続」や「Relay」の許可/拒否が設定できます。これにより、見知らぬネットワークからの接続や、中継機能を悪用した不正メールの第三者中継などを防ぐことができます。
IPフィルタ機能の設定
IP フィルタ機能のフィルタ定義は、ipfiltersファイルに記述します。ipfiltersファイルには、「ACCEPT」、「REJECT」、「RELAY」の3つのセクションが存在し、それぞれにIPアドレスの範囲を記述します。セクションの意味を以下に示します。
セクション名 | 説明 |
---|---|
[ACCEPT] | このセクションに定義されたIPアドレスは、接続を許可されます。 |
[REJECT] | このセクションに定義されたIPアドレスは、接続が拒否されます。 |
[RELAY] | このセクションに定義されたIPアドレスは、中継が許可されます。 |
なお、各セクションに同じIPアドレスがかかれた場合の優先度は、以下のようになります。
[RELAY] > [ACCEPT] > [REJECT]
また、どのセクションにも属さないIPアドレスの接続権限は、許可となります。中継については、no_relayオプションの設定に依存します。
[RELAY]セクションによる中継権限の制御を行う場合は、no_relayオプションの設定を行う必要があります。中継が許されない設定を行った場合、外部からはTeamWARE Officeのベースアドレスを持っているアドレスにしかメールを送ることができなくなります。
no_relayオプションはto.iniの[MIME]セクションに記述し、パラメータにより、以下の動作をします。
no_relay=0 | : | すべての中継を許します。 |
no_relay=1 | : | すべての中継を拒否します。MIMEゲートウェイを新規インストールした時は、この設定になっています。(TeamWARE Officeの内部宛のみ送ることができます) |
no_relay=2 | : | 送信者アドレスのベースアドレスがTeamWARE Officeのベースアドレスと一致する場合のみ、中継を許します。 |
no_relay=3 | : | ipfiltersファイルの定義により中継が制御されます。 |
上記以外の値を指定した場合の動作は、0が指定された場合と同じになります。
no_relay機能の設定値とIPフィルタ機能の各セクションに書かれたIPアドレスとの関係は以下のようになります。
no_relay=0の場合
セクション | 接続 | 中継 |
---|---|---|
デフォルト | ○ | ○ |
[REJECT] | × | × |
[ACCEPT] | ○ | ○ |
[RELAY] | ○ | ○ |
no_relay=1の場合
セクション | 接続 | 中継 |
---|---|---|
デフォルト | ○ | × |
[REJECT] | × | × |
[ACCEPT] | ○ | × |
[RELAY] | ○ | × |
no_relay=2の場合
セクション | 接続 | 中継 |
---|---|---|
デフォルト | ○ | △ 送信者アドレスがTeamWARE Officeの場合は許可 |
[REJECT] | × | × |
[ACCEPT] | ○ | △ 送信者アドレスがTeamWARE Officeの場合は許可 |
[RELAY] | ○ | △ 送信者アドレスがTeamWARE Officeの場合は許可 |
no_relay=3の場合
セクション | 接続 | 中継 |
---|---|---|
デフォルト | ○ | × |
[REJECT] | × | × |
[ACCEPT] | ○ | × |
[RELAY] | ○ | ○ |
各セクションに記述するIPアドレスのフォーマットは、CIDR形式で記述します。CIDR形式では、標準的な32ビットIPアドレスを表現することができます。さらに、先頭から有効なビット数を指定することができます。
例えば、CIDR形式は「206.13.01.48/24」のように記述します。この「/24」が先頭から24ビットが有効なネットワークアドレスという意味になります。ipfiltersの定義のフォーマットを以下に示します。
{CIDR address range}, {logging} |
フォーマット | 値 | 説明 |
---|---|---|
CIDR address range | IPアドレス | IPアドレスをCIDR形式で記述します。 |
logging | on または off | onの場合、動作ログを出力します。省略時はspam.iniの初期設定に依存します。 |
ipfiltersのフォーマットに違反した場合、以下のようなメッセージがspamfilter.logに出力されます。
#tomime# INFO 2004-01-16 05:40.46 pid:444/1772 1bc/6ec 128 |
CIDR形式の基本的な記述例を以下に示します。
1.2.3.4/32 ;1.2.3.4のみ |
ipfiltersの記述例 # |
IPフィルタ機能とallow_ip_addressオプションについて
allow_ip_addressオプションとIPフィルタ機能が同時に指定された場合は、allow_ip_addressオプションが優先されます。そのため、IPフィルタ機能を有効にするためには、allow_ip_addressオプションの定義を削除し、設定をipfiltersに記述しなおす必要があります。
allow_ip_address形式からCIDR形式への変換テーブルを以下に示します。
1.2.3.4 → 1.2.3.4/32 ;1.2.3.4のみ |
allow_ip_addressオプションは、オプションに指定されているIPアドレスしか接続が許されないようにするオプションです。記述されているIP以外は接続拒否となります。したがって、allow_ip_addressをipfiltersに転記する場合は、以下のような記述になります。
[REJECT] |
IPフィルタ機能のログ出力
IPフィルタにチェックされた場合、spamfilter.logにログを出力します。
以下にログの例を示します。
#tomime# INFO 2003-11-26 02:08.58 pid:1672/1800 688/708 128 |
SMTPフィルタ機能
SMTPフィルタ機能は、MIMEゲートウェイのSMTPレスポンダスレッドとSMTPサーバ間で会話されるSMTP(Simple Mail Transfer Protocol)を制限する機能です。
この機能により、特定の送信者、受信者アドレスによりメール拒否などが行えるようになります。
SMTPフィルタ機能の設定
SMTP フィルタ機能のフィルタ定義は、smtpfiltersファイルに記述します。
smtpfiltersの定義のフォーマットを以下に示します。
{Command}, {Pattern}, {Action}, {Logging} |
フォーマット | 値 | 説明 |
---|---|---|
Command | HELO | チェックするSMTPコマンド名を記述します。 |
Pattern | 文字列 | 一致条件の文字列を記述します。 |
Action | accept | acceptは許可です。 |
logging | on または off | onの場合、動作ログを出力します。 |
なお、ActionがRejectの場合、応答メッセージも記述する必要があります。応答メッセージは、フリーテキストですが、メッセージの最初は、RFC2821に定義される応答コード(例えば550など)の範囲内である必要があります。
また、Patternには、カンマ「,」を含む文字列は指定できません。
smtpfiltersのフォーマットに違反した場合、以下のようなメッセージがspamfilter.logに出力されます。
#tomime# INFO 2004-01-16 05:40.46 pid:444/1772 1bc/6ec 128 |
以下にコマンドとその用途について説明します。
HELO
HELO(EHLO)は、SMTP接続の最初に送られてくるコマンドです。通常、このコマンドの引数には、接続を行おうとするSMTPサーバの完全修飾ドメイン名(コンピュータ名.ドメイン名、FQDN)が指定されています。この文字列を一致条件に記述すれば、SMTPサーバのコンピュータ名で拒否することが可能になります。
拒否応答メッセージの例)RFC2822より
550 Requested action not taken: mailbox unavailable
MAIL
MAILコマンドは、SMTPプロトコル上のメールの送信者アドレスが指定されているコマンドです。このコマンドの引数には、送信者アドレスが指定されています。一致条件に送信者アドレスを記述すれば、特定の送信者からのメールを拒否することが可能になります。
拒否応答メッセージの例)RFC2822より
550 Requested action not taken: mailbox unavailable
RCPT
RCPTコマンドは、SMTPプロトコル上のメールの受信者アドレスが指定されているコマンドです。このコマンドの引数には、受信者アドレスが指定されています。一致条件に受信者アドレスを記述すれば、特定の受信者のメールを拒否することが可能になります。
拒否応答メッセージの例)RFC2822より
550 Requested action not taken: mailbox unavailable
smtpfilters の記述例を以下に示します。
HELO, bigbadspammer.com, reject:550 Mail not allowed from this domain, on |
SMTPフィルタ機能のログ出力
SMTPフィルタにチェックされた場合、spamfilter.logにログを出力します。
以下にログの例を示します。
#tomime# INFO 2003-12-25 05:57.20 pid:824/1888 338/760 128 |
SMTPフィルタ機能の一致条件について
SMTPフィルタ機能は、一致条件に書かれた文字列とSMTPコマンドで送られてきた文字列を比較します。
指定された文字列がコマンドに含まれた場合、一致したと判断します。なお、一致条件{Pattern}を省略した場合、すべてに一致することになります。