『玄箱インストール メールサーバー編
 
★SMTPメールサーバーをPostfixで構築します。
 認証にSMTP-Authを使いスパム対策します。
★popサーバーにqpopperを使います
 認証はAPOPに対応させます
 
インストール前 確認
1.ネットワークの設定を確認します。
 
★/etc/hosts  設定内容は次のとおりです。
127.0.0.1    localhost ***.**.jp ←自分のホストネーム
192.168.1.106  BOX-SV ***.**.jp ←自分のホストネーム
 
★/etc/host.conf 名前解決する場合の順番を指定するファイルです。
独自の設定をするものでなく、ほとんどインストールのままで使います。
設定内容は次のとおりです。
order hosts,bind
multi on
 
★/etc/sysconfig/network ファイルがネットワーク関連の基本設定ファイル
設定内容は次のとおりです。
NETWORKING=yes
HOSTNAME=localhost
DOMAINNAME=***.**.jp ←自分のホストネーム
GATEWAY=192.168.1.1
 
★/etc/sysconfig/network-scripts/ifcfg-eth0
これがネットワークインターフェースカード(NIC)の設定ファイルです。
玄箱ではNICがひとつですので、「eth0」の設定ファイルを編集。
設定内容は次のとおりです。
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.106
NETMASK=255.255.255.0
NETWORK=192.168.1.0
GATEWAY=192.168.1.1
★/etc/sysctl.conf
このファイルはカーネルパラメータの取得や動的な更新を行うプログラムである 「sysctl」の設定ファイルです。
重要な変更は、「net.ipv4.ip_forward = 1」とすることです。
デフォルト設定でこの値は「0」となっていますが、「1」にします。
忘れるとIPフォワーディングが有効になりません。
設定内容は次のとおりです。
# Disables packet forwarding
net.ipv4.ip_forward = 1 ←ここを0から1に変更
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
...... 以下略
★/etc/resolv.conf リゾルバのための設定ファイルです。
リゾルバは、アプリケーションからの名前解決に関する問い合わせを
ネームサーバへ送信。ネームサーバからの回答をアプリケーションへ返信します。
設定内容は次のとおりです。
search BOX-SV
domain ***.**.jp ←自分のホストネーム
nameserver 0.0.0.0 ←これは必須
nameserver 192.168.1.*       ←ルーター。これも必須
nameserver ***.***.***.*** ←プロバイダのネームサーバー等
nameserver ***.***.***.*** ←プロバイダのネームサーバー等 nameserverが指定出来るのは3つまでです。
 
 
 
 
 
 
 
 
〔【【apt-getでインストールする場合の手順】】〕
 
【Postfix】SMTPサーバー構築
 
PostFixインストール前 準備
【SMTP Authentication(SMTP AUTH)導入 Cyrus SASL
 
SMTP Authenticationは、読んで字のごとくSMTPへのアクセス時に認証を行い、
許可ユーザのみ送信を受け付ける方法です。
 
apt-getでCyrus SASLに関連するrpmを3つ一度にインストール
 
# apt-get update
# apt-get install cyrus-sasl cyrus-sasl-devel db3-devel
 
エントリを作成。
# /usr/sbin/saslpasswd name
password
password
# /usr/sbin/sasldblistusers
nameに対するエントリにmech: PLAIN, mech: CRAM-MD5, mech: DIGEST-MD5があることを確認
 
【Postfix】SMTPサーバー本体をインストール
 
apt-getでインストールしたpostfixのrpmはSMTP-AUTH対応でコンパイルされていないので、対応したrpmを作ってインストールする。
ただしapt-getでsrc.rpmを取ってくると非常に古いバージョンなので直接ダウンロードした方が良いでしょう。今回はapt-getの方法を記述します。
 
まずダウンロードするフォルダに移る
# cd ~/***
ソースrpmをそこにGet
# apt-get source postfix
展開する
# rpm -ivh postfix-1.1.13-0vl0.26.src.rpm ←ダウンロードしたrpm名
# cd /usr/src/redhat/SPECS
# cp postfix.spec postfix.spec.dist
 
postfix.spec というファイルが生成されますので、エディタで編集します。
# vi postfix.spec
・・・ファイル前の部分 省略 ・・・
Release: 0vl0.27 ←最後の数字をひとつ大きな数字にしておくと
    できあがりのファイルを間違わないので書き直しておくと良い
・・・ファイル前の部分 省略 ・・・
%build <-- %build セクション内を編集します
make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include" AUXLIBS="-L/usr/lib -lsasl"
make DEBUG="" OPT="$RPM_OPT_FLAGS"
・・・ 以下省略 ・・・
 
編集できたら保存します
 
install までが上手く行くかのテスト( %prep, %build, %installが実行される)
その前にリビルドに必要なファイルをGET(無いとテストがエラーで止まります)
# apt-get install patch
# apt-get clean
 
テスト開始
# rpm -bi postfix.spec
上記コマンド実行後、エラーがなければ、spec ファイルから rpm ファイルを作成します。
 
# rpm -bb postfix.spec
 
これで/usr/src/redhat/RPMS/ppc/ の中に postfix-1.1.13-0vl0.27.ppc.rpm が作られます。
これをインストール!!
強制的にパッケージの上書きを行う
# rpm -i --force /usr/src/redhat/RPMS/ppc//postfix-1.1.13-0vl0.27.ppc.rpm
 
パッケージを上書きしたら、SMTP-AUTH に対応させるべく、Postfix の設定ファイルを編集します。
/etc/postfix/main.cf をエディタで開き以下の様に記述します。
 
----------------以下 main.cf 本体 動く最小限度です---------------------------
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
default_privs = nobody
myhostname = ******.ddo.jp ←自分のホストネーム
mydomain = ******.ddo.jp ←自分のホストネームでよい
myorigin = $mydomain
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8
alias_database = hash:/etc/postfix/aliases
mail_spool_directory = /var/spool/mail
debug_peer_level = 2
debugger_command =
PATH=/usr/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/lib/sendmail
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
setgid_group = postdrop
allow_percent_hack = no
 
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,check_relay_domains,reject
smtpd_sasl_security_options = noanonymous,noplaintext
 
---------------------以上----------------------------------------------
「permit_sasl_authenticated」は
SMTP認証( SMTP-AUTH )を通過したものを許可する設定なので必ず加える。
「permit_mynetworks」は
「mynetworks」で設定されたネットワークからの接続を許可する。
「reject」はそれ以外は拒否することを設定している。
smtpd_recipient_restrictions=permit_sasl_authenticated,permit_mynetworks,check_relay_domains,reject
匿名での接続を拒否する。noplaintextを追加記入するとPLAINでの認証を拒否する。
smtpd_sasl_security_options = noanonymous,noplaintext
 
SASL 用アカウントとパスワードの設定
 
SMTP-AUTH 用のパスワードを設定します。
 
これは、UNIX ユーザのパスワードとは異なるモノを指定しても構いません。
sasl用パスワードデータベースの指定します。
 
/usr/lib/sasl/smtpd.conf を新規作成し、以下の1行のみを記入し、保存します。
 
pwcheck_method:sasldb
 
パスワードの作成
パスワードの作成は、以下のように行います。
mydomainにはmain.cfで設定したドメイン名を指定し入力
パスワードを聞いてくるので、確認を含めて2回入力します。
 
 # saslpasswd -c -u mydomain ユーザ名
 
例: saslpasswd -c -u shotech.arara.net tanaka
必要なユーザ分上記コマンドを繰り返します。
 
設定したパスワードを削除する場合は、以下のようにします。
 
 # saslpasswd -d -u mydomain ユーザ名
 
作成されたパスワードの確認は、以下のようにします。
 
 # sasldblistusers
 user.tanaka realm: shotech.arara.net: DIGEST-MD5
 user.tanaka realm: shotech.arara.net mech: CRAM-MD5 
 
パスワードファイルの設定Postfixがsasldbを利用できるようにグループに登録し、パーミッションを変更します。
 
 # chgrp postfix /etc/sasldb
 # chmod 640 /etc/sasldb
 
最後にPostfix に再起動をかけます。(もしくは起動)
 
再起動の場合
# /usr/sbin/postfix reload
postfix/postfix-script: refreshing the Postfix mail system <-- 再起動完了のメッセージ
 
起動の場合
# /usr/sbin/postfix start
postfix-script: starting the Postfix mail system <-- 起動完了のメッセージ
 
再起動時に自動起動するよう登録するには、/etc/rc.d/rc.local に上記コマンド(/usr/sbin/postfix start)を追記しておけば、再起動時に実行されます。
再起動後に、netstat -lnで25番ポートがListen状態になっているか確認しておきましょう。
 
これで、SMTP-AUTH が使用可能になりました。
事項では、本当に SMTP 認証を行っているかをチェックしてみます。
 
SMTP-AUTH の確認
 
SMTP-AUTH が正常に動作しているかを確認します。
具体的には Telnet で 25 番ポートにアクセスして確認します。
 
$ telnet localhost 25 <-- 入力し、エンター
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 www.miloweb.net ESMTP Postfix
EHLO localhost <-- EHLO localhostと入力
250-zdnet.hoge.org
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5 <-- この行があればオッケーです
250 8BITMIME
QUIT <-- 確認できたので、QUITコマンドで切断します
 
もし「 250-AUTH PLAIN LOGIN 」と表示されていれば、SMTP-AUTH が上手く行っていないので、
Postfix のインストール手順を見直して、やり直さなければならない。
 
 
 
 
 
 
 
 
 
 
【POP3サーバーの導入(Qpopper)】
Sendmailでメールの受信を行う場合はQpopperをインストールする必要があります。
またパスワード認証を使うため POP before SMTP を導入します。
最新のqpopperは設定でPOP before SMTP(APOP)に対応しています。
 
【まずはPOP3サーバーとしてインストール】
#apt-get update
#apt-get install qpopper
 
動作環境の設定
ファイル /etc/services にPOP3(ポート番号110)の設定がされているかを確認します。
pop3      110/tcp             # PostOffice V.3
 
ファイル /etc/inetd.conf にPOP3の設定がされているかを確認します。
pop-3  stream tcp   nowait root  /usr/sbin/tcpd in.qpopper
 
修正した場合は、inetdプロセスをリスタートする必要がある。
 
# ps -fe | grep inetd
root    444   1 0 15:46 ?    00:00:00 inetd
root    539  491 0 16:36 ttyp0  00:00:00 grep inetd
# kill -HUP 444
 
上記444番は、inetdのプロセスIDです。
このプロセスIDは、それぞれの環境によって異なる。
psコマンドで得られたinetdのプロセスIDに、killコマンドで
ハングアップシグナル(-HUP)を送ることにより、inetdにリスタートがかかる。
 
<Qpopperの動作確認>
Qpopperの動作確認は、ポート番号110でTELNETして行ないます。
 
# telnet localhost 110
+OK QPOP (version 3.1) at server01.domain01.co.jp starting.
user username
+OK Password required for username.
pass password
+OK username has 2 visible messages (0 hidden) in 896 octets.
quit
+OK Pop server at server01.domain01.co.jp signing off.
Connection closed by foreign host.
#
 
username と password は、root以外のユーザアカウントを利用します。
rootは、セキュリティ上qpopperを利用できないようになっています。
メッセージの内容は多少異なりますが、大筋上記のようなメッセージが表示されれば
Qpopperは正常に動作していることになります。
 
ちなみに メール内容を表示するには
---------------------------------------------------------------------
$ echo "this is a test mail" | /usr/ucb/Mail -s testsubject testuser
$ telnet localhost 110
 
USER hoge
PASS test
LIST
RETR 1
 
[メール内容が表示されます]
 
QUIT 
--------------------以上------------------------------------------
 
 
【QpopperのAPOP への対応】
 
Qpopper を初めて APOP 対応にする時は以下のコマンドを実行します。
(popauthは /usr/sbin/にある)
 
# /usr/sbin/popauth -init
Really initializa POP authentication DB? y ←yを入力でデータベース初期化
 
APOP に対応させるアカウントを設定して行きます。
この設定を行ったアカウントは以後、APOP 以外は利用できなくなります。
ご注意下さい。
尚、以下のユーザーはすでにLINUXユーザーとして登録されたユーザーが
APOPユーザーとなります。LINUXユーザーとして登録していないユーザーは
APOPユーザーになることは出来ません。
 
# /usr/sbin/popauth -user username <-- username には実際のユーザ名を入力します
New password:****************
Retype new password:****************
 
上記コマンドは必要なアカウントの数だけ繰り返します。
 
もし、APOP 対応のユーザを通常の POP 接続に戻したい場合は以下のコマンドを実行します。
 
# /usr/sbin/popauth -delete username <-- username には実際のユーザ名を入力します
Warning: deleting user "username"
 
最後に 設定を反映させる為に inetd を再起動します。
 
# /etc/rc.d/init.d/inet restart
Stopping INET services:                  [ OK ]
Starting INET services:                  [ OK ]
 
これで、APOP 対応となりました。
 
※参考
Sendmailはmbox形式ですので、メールはファイル形式で保存されます。
メールを確認する場合はmailコマンドを実行してください。
一覧する場合はmailxコマンドを実行してください。
キューを確認する場合はmailqコマンドを実行してください。
基本的な設定は以下にまとめました。
 
受信メールの確認 /bin/mail
メールの送信操作 /usr/lib/sendmail
ログファイルの場所 /var/log/syslog
送信未完メールキューの保存場所 /var/spool/mqueue/
キューの内容確認 /usr/lib/sendmail -bp ; mailq
送信未完メールの再処理 /usr/lib/sendmail -q
aliasファイルの場所 /etc/postfix/aliases
aliasファイルの更新操作 /usr/lib/sendmail -bi ; newaliases
 
 
 
 
 
 
〔【【ソースからインストールする場合の手順】】〕
 
【Postfix】SMTPサーバー構築
 
SMTPメールサーバーを構築します。
認証にSMTP-Authを使いスパム対策します。
 
インストール前 準備
Postfix用ユーザー'postfix'と、グループ 'postfix' 'postdrop' を作ります。
 
★'postfix'ユーザを追加。
 このアカウントは、
 他のユーザアカウントが使用していないユーザIDとグループIDを持ち、
 誰もログインできないアカウントとし、ログインシェルやホームディレクトリなし
 とする。
 
 # vipw
 postfix:*:12345:12345:Postfix owner:/nonexistent:/sbin/nologin
 
★ユーザ 'postfix' 用のグループ'postfix'を作成。
 
 # vi /etc/group
 postfix:*:12345:postfix
 
 同様に他のユーザアカウントに使われていないグループ ID を持つグループ
 'postdrop' を作成。(このグループは古いPostfix ではオプションでしたが、現在は必須。)
 
 postdrop:*:54321:
 保存。
 
インストール
 SMTP-Authのインストールで再コンパイルが必要なのでソースを展開して
 インストールする。
 
 Postfixの最新版をダウンロードします。
 今回はpostfix-2.1.4.tar.gz(2002.08.07現在)です。
 
 インストールは、任意の場所にソースを展開してコンパイルします。
  # tar zxfv postfix-2.1.4.tar.gz
  # cd postfix-2.1.4
# make
  # make install
 この後色々聞いてくるがすべてリターンで良い(デフォルト)
 
★postfix宛のメールが root に向いているか確認。
 
 #vi /etc/postfix/aliases
 postfix: root
 の記述があるか確認。
 
 
設 定
 設定ファイル: /etc/postfix/main.cf
 viで開いて動くように正しく編集
#vi /etc/postfix/main.cf
以下、/etc/postfix/main.cf 変更内容はapt-getでインストール編を参照してください。
 
間違いがないかチェック
#/usr/sbin/postfix check
#
OKなら何も出力されません。
 
確認のための設定の表示
#postconf -n
 
Postfix を起動するには、
 # /usr/sbin/postfix start
 
# newaliases
を実行しましょう。「/etc/aliases.db」を作成するコマンドです。
 
----(今回はやらないが、バーチャルドメインの設定)---
/etc/postfix/main.cfに次の行を追加します。
virtual_maps=hash:/etc/postfix/virtual
/etc/postfix/virtualを編集します。
例えば次のようにします。
この設定では、***@bitarts.net宛ての全てのメールをmiyamaeへ転送します。
bitarts.net       anything
@bitarts.net      miyamae
 
データベースを構築するために、次のコマンドを実行します。
# /usr/sbin/postmap virtual
動いているPostfixに設定ファイルの更新を伝えるために、次のようにします。
# /usr/sbin/postfix reload
------------------------------------------------------------------------------
 
【SMTP Authentication(SMTP AUTH)導入 Cyrus SASL
ソースからインストールしても良いがapt-getで十分なのでapt-getの項をみてまず実施。
インストール後
PostfixでSMTP AUTHを導入するには、Postfixを再コンパイル・再インストールする必要があります。
 
インストールは、任意の場所にソースを展開してコンパイルします。
$ tar zxfv postfix-2.1.4.tar.gz
$ cd postfix-2.1.4
$ make tidy  ←以前にインストールしたソースディレクトリで作業を行う場合に必要で        す。新規インストールや異なるディレクトリで作業する場合は不要です。
$ make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include" AUXLIBS="-L/usr/lib -lsasl"
$ make
$ su
# make install
make install後、いろいろ聞かれますが、再インストールならば全て「Enter」でOK.。
 
【PostFixの作成】
/etc/postfix/main.cfを自分の環境に合わせて適切に設定します。最低限以下の項目を設定する必要があります。apt-get編を参考にしてください。
myorigin = $myhostname
inet_interfaces = all
mydestination = $myhostname, localhost.$mydomain
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
mail_spool_directory = /var/spool/mail
mynetworks = 192.168.1.106, 127.0.0.0/8
 
以下すべてap-get編と同じです。
【パスワードファイルの作成】【パスワードデータベースの指定】
【パスワードの作成】【Postfixの設定ファイルの編集】【SMTP AUTHのテスト】
メールソフト(Outlook Express)によるテスト】【Outlook Expressでの設定】