sendmailの設定

提供: Wikiducca
2019年1月1日 (火) 13:07時点におけるThe Pioneer (ノート | 投稿記録)による版

移動: 案内検索

Wikiduccaは終了しました。今後はゴールドペディアをご利用ください。sendmailでspamの踏み台とならないためにいくつかの設定を行う必要があります。 ここでは、sendmailの基本的な設定の他に行わなければならないspamの踏み台とならないための設定を行います。 spamの対策には、大きく分けて2種類あります。1つは踏み台とならないために中継の禁止をおこなうもの、もう1つは自サイトに対してspamを送られないようにするためのものです。 sendmailの設定を行う際、自サイトのメール設定だけでなく、中継を行わないように設定する必要があります。 == (1) 中継の禁止 == 中継を許可したばかりにspamの踏み台となってしまっては、自サイトの影響だけでなく、多くのサイトに迷惑をかけ無駄な資源を使用してしまうことになります。 そこで、他サイトから自サイトに対するメール以外を排除します。 ここの説明はsendmail.8.11.3を前提としています。 sendmailにおいて中継の禁止はsendmail.cfにおいて設定します。sendmailの起動時に、その動作を定義するものです。 ここでは、sendmail.cfをm4形式のマクロを使用し生成します。今回は、ducca.mcというファイル名で作成しますが、任意の判りやすい名前で構いません。 このマクロの雛型は、sendmailのソースに含まれており、sendmail-8.11.3/cf/cfのパスにOSごとに置かれています。 Linuxの場合はgeneric-linux.mc、FreeBSDの場合はgeneric-bsd4.4.mcをducca.mcというファイルにコピーします。 このときのducca.mcの内容は次の通りです。 divert(0)dnl VERSIONID(`$Id: generic-bsd4.4.mc,v 8.10 1999/02/07 07:26:02 gshapiro Exp $') OSTYPE(`bsd4.4')dnl DOMAIN(`generic')dnl MAILER(`local')dnl MAILER(smtp)dnl FreeBSDにおいてのみ注意しなければならない点があります。 それは4.2-RELEASEからmail.localのインストール方法が変わったことです。 これによって、mail.localをメール配送に使用している場合は、 sendmail.cfのMlocalにおいてF=Sフラグを設定する必要があります。 ducca.mcファイルには次の行を追加します。 MODIFY_MAILER_FLAGS(`LOCAL', `+S')dnl ここまでは通常のメール設定です。 ここからは、/etc/mail/aliasesをはじめとするsendmailの動作に必要な設定が終わっているとして解説を行います。 中継を禁止するには、さらに次の一行を加えます。 これは、メールの転送や中継の制限や、受け取りたくないメールアドレスやドメインを記述します。 FEATURE(`access_db', `hash -o /etc/mail/access')dnl /etc/mail/accessには、中継を許可するサイトの設定を記述し、 次のようにデータベースを作成します。 # makemap hash /etc/mail/access < /etc/mail/access この他、メールサーバの本来の動作を行う設定を記述し、 次のようにsendmail.cfを生成します。 % m4 -D_CF_DIR_=./sendmail-8.11.3/cf/cf/ ./sendmail-8.11.3/cf/m4/cf.m4 ducca.mc > sendmail.cf 最後に、sendmailを再起動するか、システムを再起動することによって、 最新のsendmail.cfが読み込まれます。 中継しないことを確認する 設定したサーバが中継するかどうかを確認することが必要です。 これには、abuser.netが提供しているテストによって確認することができます。 Mail relay testing == (2) データベースを参照し禁止する == 中継を許可しているサイトを集めたデータベースが存在します。 一種のブラックリストとして考えて良いでしょう。 このデータベースに掲載されているサイトからはメールを拒否する設定も可能です。 このためには、ducca.mcに次の行を追加します。 FEATURE(dnsbl,`inputs.orbs.org')dnl FEATURE(dnsbl,`outputs.orbs.org')dnl FEATURE(dnsbl,`dul.maps.vix.com')dnl FEATURE(dnsbl,`relays.mail-abuse.org')dnl FEATURE(dnsbl,`rbl.maps.vix.com')dnl == (3) 特定のメールを拒否する == sendmailの設定では、中継を拒否するだけでなく特定のドメインから自サイトに届くメールを拒否することも可能です。 これには、/etc/mail/accessファイルを修正します。 たとえば、以下のように記述します。 [email protected] REJECT relay-dom.com REJECT 拒否する方法はいくつかあります。 * ドメインを拒否 * IPアドレスを拒否 * メールアドレスを拒否 * ユーザ名を拒否 === ドメインを拒否 === もし、spamを送るドメイン全体を拒否したい場合は次のように指定します。 これは、sample-spam.comドメインがspamの発信源である、または中継に利用されやすいサーバであり、このドメインから自サイトに対するメールは一切拒否するという場合に使用します。 なお、このドメインは架空のものであるため、実際に拒否するメールアドレスを使用してください。 relay-dom.com REJECT === IPアドレスを拒否 === もし、特定のIPアドレス(192.168.128.1)から自サイトに対するメールは一切拒否するという場合に使用します。 なお、このIPアドレスは架空のものであるため、実際に拒否するIPアドレスを使用してください。 192.168.128.1 REJECT === メールアドレスを拒否 === 特定のユーザがspamを送信している場合、このユーザから自サイトに対するメールは一切拒否するという場合に使用します。 なお、このメールアドレスは架空のものであるため、実際に拒否するメールアドレスを使用してください。 [email protected] REJECT === ユーザ名を拒否 === spam@といった明らかにspam送信を目的としたユーザ名を全て拒否する場合は次のように指定します。 ただし、この場合はspamを目的としたユーザ以外も拒否するため、 使用には十分注意する必要があります。 また、spam777@といったユーザ名には有効にならない点にも注意しておく必要があります。 spam@ REJECT == (4) 拒否したメール == これらの設定を行うごとにmakemapコマンドによってaccessファイルのデータベースを作成する必要があります。 データベースを作成し、実際に拒否されたメールは、次のようにログに記述されます。ログはFreeBSDの場合/var/log/maillogとなります。 ここには、次のように記述されます。 日時 mail sendmail[2210]: f44FSEe02210: ruleset=check_mail, arg1=, relay=mail.duccaa.com, reject=550 5.7.1 ... Message from [email protected] rejected もし、拒否せず受信できるようにするためには、/etc/mail/accessから該当行を削除します。 なお、既に拒否したメールは送信者に返されているため、再送信してもらわなければ受信者に配送することはできません。 == (5) ユーザ情報列挙の拒否 == SMTPのコマンドにはEXPNとVRFYがあります。 つまり、これらを使用すると、そのユーザが存在するかということが分かります。 たとえば、下の赤色部が、 telnetコマンドでSMTPのポートに接続し、EXPNコマンドを入力したところです。 % telnet mail.ducca.org smtp Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 mail.ducca.org ESMTP Sendmail 8.11.3+3.4W/8.11.3; Mon, 3 Mar 2010 21:06:18 +0900 (JST) HELO www.ducca.org 250 mail.ducca.org Hello localhost [192.168.0.1], pleased to meet you EXPN yamada 250 2.1.5 YAMADA Taro >[email protected]< これらを禁止するには、ducca.mcにて、noexpnとnovrfyを定義することが必要です。 このためには、ducca.mcに次の一行を追加します。 define(`confPRIVACY_FLAGS', ``authwarnings,noexpn,novrfy'')dnl [[Category:Linux]][[Category:sendmail]] [[Category:Eメール]]