メールサーバ(POP before SMTP)の設定方法
pop及びsmtpへのtelnet接続方法も記載



●設定方法

postfix-0.0.19991231pl09-0vl4.i386.rpm

dracd-PbS-1.11-0vl1.i386.rpm
dracd-PbS-1.11-0vl1.src.rpm
solid-pop3d-PbS-0.15-0vl1.i386.rpm
solid-pop3d-PbS-0.15-0vl1.src.rpm

dracd-1.11-1.i386.rpm
dracd-1.11-1.src.rpm
solid-pop3d-0.15-1.i386.rpm
solid-pop3d-0.15-1.src.rpm

から、各rpmファイルをダウンロードしてインストールします。その前に
  rpm -q qpopper
で、qpopperがインストールされているかどうか確認してください。インストールされていたら、
  rpm -e qpopper
で削除してください。
  # rpm -ivh postfix-0.0.19991231pl09-0vl4.i386.rpm
  # rpm -ivh dracd-PbS-1.11-0vl1.i386.rpm
  # rpm -ivh solid-pop3d-PbS-0.15-0vl1.i386.rpm
/etc/mail/dracd.allowに
  255.255.255.255		127.0.0.1
  255.255.255.255		192.168.0.254← 自サーバのIPアドレス入力する
が存在するかどうか確認し、存在しない場合は追加(または作成)してください。
また、/etc/mail/dracd.dbの有無も確認して存在しない場合は内容が空のものを作成してください。
dracdを次のように起動してください(自動起動も忘れずに設定してください)。
  # /etc/rc.d/init.d/dracd start
インストールしたsolid-pop3dはapop対応です。
APOPで使用させたいユーザでログインして、
  % /usr/bin/pop_auth
  Enter NEW password for user kenzo:  パスワードを入力(表示されない)
  Reenter NEW password for user kenzo:  パスワードを入力(表示されない)
パスワードを入力します。ユーザのフォルダの下に「.spop3d」が作成されていれば成功です。
solid-pop3dを起動させます。setupコマンドを利用してもいいですし、inetd.confを直接編集してもいいです。
  # vi /etc/inetd.conf
  #pop-3   stream  tcp     nowait  root    /usr/sbin/tcpd spop3d
 
 └#を外す。
  # kill -HUP `cat /var/run/inetd.pid`  でinetdを再起動します。
次に、solid-pop3dの動作確認をします。
  # telnet 127.0.0.1 110
  Trying 127.0.0.1...
  Connected to 127.0.0.1.
  Escape character is '^]'.
  +OK Solid POP3 server ready <22471.995857926 @firewall.space.local>
   (上記が表示されない場合は /etc/hosts.allow /etc.hosts.deny を確認して下さい)
  と表示されたら、
  user kenzo  としてユーザ名を入力、問題が無ければ以下のように表示されます
  +OK Password required for kenzo.
  pass kenzo  パスワードを入力、APOPでない通常使用するパスワード。問題が無ければ以下のように表示されます。
  +OK kenzo has 0 visible messages (0 hidden) in 0 octets.
  quit  と入力して終了する。
  +OK Pop server at firewall.space.local signing off.
  Connection closed by foreign host.
 # strings /etc/mail/dracd.db
 995856784
 127.0.0.1 ← 追加されていることを確認してください。
  # telnet pc1 ← リモートホストへ一旦ログイン
 Trying 192.168.0.101...
 Connected to pc1.
 Escape character is '^]'.
 Red Hat Linux release 6.2 (Zoot)
 Kernel 2.2.16 on an i586
 login: kenzo        ← 入力する
 Password: ********  ← 入力する
 Last login: Sat Dec  2 22:52:09 from pc2
 $ telnet pc2.space.local 110 ← リモートホストから確認(WindowsPCからでもOK)
 Trying 192.168.0.254...
 Connected to pc2.
 Escape character is '^]'.
 +OK Solid POP3 server ready <1187.995859129@pc2>
 user kenzo          ← 入力する
 +OK username accepted
 pass ********       ← 入力する
 +OK authentication successful
 quit                ← 入力する
 +OK session ended
 Connection closed by foreign host.
 $ exit
 Connection closed by foreign host.
 
  # strings dracd.db
 995859167
 192.168.0.101 ← 追加されていることを確認してください
 995856784
 127.0.0.1
 #
main.cfを編集します。
  # vi /etc/postfix/main.cf
  以下は、設定した箇所のみ書き出しています。
  なお、最初からコメントアウトが外され有効になっているものも含んでいます。
  queue_directory = /var/spool/postfix
  command_directory = /usr/sbin
  daemon_directory = /usr/lib/postfix
  mail_owner = postfix
  myhostname = mail.test.co.jp
  mydomain = test.co.jp
  myorigin = $myhostname
  inet_interfaces = all
  mydestination = $myhostname, localhost.$mydomain $mydomain
  alias_maps = hash:/etc/postfix/aliases
  alias_database = hash:/etc/aliases
  mail_spool_directory = /var/spool/mail
  relay_domains = $mynetworks
  mynetworks = 127.0.0.0/8, hash:/etc/mail/dracd
  local_destination_concurrency_limit = 2
  default_destination_concurrency_limit = 10
  debug_peer_level = 2
  debugger_command =
           PATH=/usr/bin:/usr/X11R6/bin
           xxgdb $daemon_directory/$process_name $process_id & sleep 5
  allow_percent_hack = no
続いて、SMTPサーバーの動作確認をします。
 # telnet localhost smtp
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 220 firewall.space.local ESMTP Postfix
 helo localhost           ← 入力する
 250 firewall.space.local
 mail from: taro@localhost← 入力する
 250 Ok
 rcpt to: taro@localhost  ← 入力する
 250 Ok
 data                     ← 入力する
 354 End data with .
 test!                    ← 入力する
 .                        ← 入力する
 250 Ok: queued as 15D232BAB2
 quit                     ← 入力する
 221 Bye
 Connection closed by foreign host.
 #
root宛のメールを任意のユーザに転送するには
  # vi /etc/aliases
  # Basic system aliases -- these MUST be present.
  MAILER-DAEMON:  postmaster
  postmaster:     root
  # General redirections for pseudo accounts.
  bin:            root
  daemon:         root
  games:          root
  ingres:         root
  nobody:         root
  system:         root
  toor:           root
  uucp:           root
  # Well-known aliases.
  manager:        root
  dumper:         root
  operator:       root
  # trap decode to catch security attacks
  decode:         root
  # Person who should get root's mail
  #root:          marc
 
 └#を外し、marcの箇所を任意のユーザに設定する。
  例:root	kenzo  この設定ではroot宛のメールはhogeに送られます。
aliasesを編集したので、システムに読み込ませる必要があります。
  # newaliases
補足:

/etc/mail/dracd.dbの中身がいつまでたっても保持されているので、30分ごとに強制的に空になるようにcronを設定した。
  # vi init-dracd.db
  /etc/rc.d/init.d/dracd stop
  cat /dev/null > /etc/mail/dracd.db
  /etc/rc.d/init.d/dracd start
  # vi initdracd
  */30 * * * * root /root/init-dracd.db
このファイルを適当なフォルダに保存。/etc/cron.dにinitdracdとして保存。

不正リレーのチェック:

外部からの不正リレーをきちんと防げているかをチェックするには、メールサーバから
  % telnet relay-test.mail-abuse.org
とすると、自動的に telnet を実行したホストへアクセスし、十数個の不正なメール中継のチェックを行ないます。自分の管理下外のホストに対するチェックは不正アクセスになるので、決してチェックしてはいけません。また、管理者によってはユーザがこのようなチェックを行なうことを嫌うサイトもあります。実行は各自の責任において行なってください。

このテストを全てパスするためには 19991229 以降のバージョンの Postfix が必要です。それ以前のものは、構造上一部でチェックしきれないものがあります。たいていの場合は問題ありませんが、念のためバージョンアップして完全にテストをパスすることを確認する方がよいでしょう。

なお、sendmail のオプション -bt は Postfix ではエラーになります。Postfix の設定ファイルの文法チェックは
  # postfix check
で行なえます。