[トッ プ ページ]

Debian (sarge)で メールサーバ(その1)

          -- PostfixでSMTPサーバ --

ま ずは、MTA(メールの配信エージェント)として何を使うんか決めんといかん。
Debianの標準装備は exim ちゅうMTAらしいが、Google眺めるとPostfixの情報が多いみたいじゃ。
Fedoraにゃ普通に入っとるみたいじゃし、んま、これで行くことにしょう。

大体の方針は最初に決めとこか。
  ・SMTPサービスのユーザ名 (SMTP-AUTHで認証するためだけのユーザ名)
     : smtpuser (もちろん本当はこんな名前使わんよ)
          --- 使い勝手との相談じゃけど、メールアドレスのユーザ名(Debianのユーザ名)とは違う方が安全じゃろ。

  ・メールサーバ名(SMTPもIMAPも同じサーバ名としとく)
     : mail.xxx.dyndns.org

  ・LAN内ローカルIPアドレス : 192.168.11.***

  ・メール受信ディレクトリ(IMAPサーバとしてCourier使うつもりだし)
     : ~/Maildir/

  ・LAN外からSMTPサーバ使う時の認証(LAN内ホストからは認証無しで使えることにしとく)
     : SASLで認証。パスワードの確認はCRAM-MD5またはDIGEST-MD5による。
                  (外から OutlookExpress なんぞで使うんなら、plainパスワードの認証が必要じゃ。
                   そんときゃ、SSL対応にしとくべきじゃろ。とりあえずこれでっちゅう話)


1. Postfix のインストールと基本設定(LAN内ホストからの限定使用)

# apt-get install postfix
したらいろいろ聞いてくるけど、後から dpkg-reconfigure --priority=low postfix でやり直せるけん、
適当に答えときゃ大丈夫そうじゃ。
これで、eximからの機能の置き換えも自動的にやってくれるらしい。
    ↓

/etc/postfix/main.cf を編集して、以下の設定を書く。
  この設定ファイルで、同じパラメータが2回以上定義されたら後ろの方が有効じゃけん
  ファイルの最後尾に書いたらえぇ。

myhostname = mail.xxx.dyndns.org
mydomain = mail.xxx.dyndns.org
mynetworks = 127.0.0.0/8, 192.168.11.0/24
mydestination = $myhostname,$mydomain,localhost,localhost.localdomain
myorigin = $myhostname
home_mailbox = Maildir/
それと、main.cf の中の mailbox_command の行はコメントアウトしてpostfixにローカル配信させる。
# mailbox_command = procmail -a "$EXTENSION"
   ↓
# /etc/init.d/postfix restart
すりゃ、もうLAN内ホストからのメール送信はで きるはずじゃ。
試しにワシんちの別のPCのKMail(初めて使うわい)でSMTPサーバにmail.xxx.dyndns.org指定して
外のメールアドレスに送ってみたらOKじゃった。(サーバ名は/etc/hostsで名前解決できるようしといた)
   ↓
(不正中継テスト)
ここでもう、ルータのNATで25番ポートをサーバに引っ張り込んで、メールの不正中継テストやってみることにした。(後でまたやるけど)
Third Party Relay Check(www.rbl.jp/svcheck)を利用させてもらって、20種類の不正中継テストで全て拒否されることを確認。ありがとうございまし た。


2. SASLでSMTP-AUTH (DIGEST-MD5 & CRAM-MD5) --- LAN外ホストからも使えるように

スパムメールの発信元になったら大迷惑で大恥じゃ。
ワシらみたいな半端モンがSMTPサーバを外に開いたら正直ゆうて危ない。
何か気持悪そうなら、LAN内ホスト限定使用に戻そう思うとるが、一度やってみよう言う話。

(1) Cyrus-SASLのインストール

# apt-get install libsasl2 libsasl2-modules sasl2-bin
# apt-get install postfix-tls
でSASL2系入る。以後何かと「2」が付く。(2行目はpostfixをsaslに対応させるた め)
  ↓

(2) Postfixの設定ファイル手当
 /etc/postfix/main.cf を編集して書き込み(1で言うたけど、一番下に書いたらえぇ)
smtpd_sasl_auth_enable=yes
smtpd_sasl_local_domain=$myhostname
smtpd_recipient_restrictions=
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination
smtpd_sasl_security_options=noanonymous,noplaintext
 (注) ・reject_unauth_destinationは以下のパラメータで定義した以外の宛先を拒否するらしい。
        $mydestination(これは許してもらわんと、メール受信できんわな)
        $inet_interfaces
        $virtual_alias_domains
        $virtual_mailbox_domains
        $relay_domains(特に定義してないし)


    ・最下行 noplaintextで、ログイン方式と平文(PLAIN)パスワード方式を拒否することになる。
        -- Outlook Express なんぞには使わせんちゅうこと。

      ・PLAIN許してOutlook Expressとか(古いAUTHコマンド対応のメールクライアント)で使うんなら、
        broken_sasl_auth_clients=yes も書くらしい。


(3) パスワードチェックの設定ファイル作成
 /etc/postfix/sasl/smtpd.conf を新規作成して、以下の設定を書く。

pwcheck_method: auxprop
mech_list: cram-md5 digest-md5

  もし、main.cf の中の smtpd_sasl_security_options で noplaintext とせずに、
    LOGINやPLAINも許すんなら、 mech_listも書かんでえぇじゃろ。


(4) SASLパスワード設定
         (LinuxユーザパスワードやIMAPのパスワードとは違うのにせにゃ、つまらんよのぉ)
  /etc/sasldb2 ちゅうファイルがパスワードデータベース。saslpasswd2 で設定できる。
     (# strings /etc/sasldb2で簡単に読めちまうが)
# saslpasswd2 -c -u mail.xxx.dyndns.org smtpuser
として、例によって2回パスワードを入力すりゃ、これが SASL認証パスワードとして登録される。
       ・設定ユーザ確認は、# sasldblistusers2
       ・設定削除は、# saslpasswd2 -d -u mail.xxx.dyndns.org smtpuser
  ↓
 sasldb2をPostfixが使 えるようアクセス権設定して、ハードリンク張る。
# chgrp postfix /etc/sasldb2
# chmod 640 /etc/sasldb2
# ln /etc/sasldb2 /var/spool/postfix/etc
 これで一応設定終了。
  ↓
# /etc/init.d/postfix restart


(5) SMTP-AUTH の確認

 (5-1) telnetコマンドで、SMTP-AUTHが機能していることを確かめる。
$ telnet localhost 25
  でログインしたら
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 mail.xxx.dyndns.org ESMTP Postfix (Debian/GNU)
  と出てコマンド待ちになるけん、
ehlo localhost
  と打ちゃぁ、
250-mail.xxx.dyndns.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250 8BITMIME
  と返ってきて、下から2行目でDIGEST-MD5 とCRAM-MD5によるSMTP-AUTHが機能しとる言うてくれる。
  (QUITで終了)


 (5-2) メールクライアントで確認

  まず、/etc/postfix/main.cf の中の permit_mynetworks をコメントアウトして、
   # /etc/init.d/postfix restart してから、
  ワシんちの別のPCのメーラ Evolution で確認してみた。

   SMTPサーバを、「認証なし」や「POP before SMTP」にしたら、エラー表示。
                 「PLAIN」や「ログイン」だと、「サーバがサポートしていません」と表示。
                 「CRAM-MD5」、「DIGEST-MD5」とした場合は送信できた。

  望みの形になっとるみたいじゃ。
      (実は最初、KMailで試したら、DIGEST-MD5で送信できるのに、CRAM-MD5じゃと
      「おそらくパスワードが間違ってます」とか言いよる。こりゃぁKMailのバグなんか、
       ワシが何か勘違いしとるんか分からんが、しばらく悩んだで)
  まぁ、Thunderbirdでも、認証ありとして送信できたし、この辺でえぇじゃろ。



 (5-3) 不正中継チェック
  色々いじったけん、も一回チェック。
  今度は http://www.ORDB.orgさんで検査を申し込んで、「大丈夫みたいよ」と回答貰うた。
  ありがとうございました。

                                    [その2-IMAPへ]   [トッ プページ]