『玄箱インストール メールサーバー編』
★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での設定】