>お楽しみコーナー>Linux>インターネットサーバー サイトマップ 最終更新日:2005/07/22

センリュウのホームページへ ようこそ!

 LINUXでインターネットサーバー構築  続編1 

第一部 sendmailからqmailに切り替える

 ●sendmailの停止

・sendmailサービスの停止。
・/usr/sbin/sendmailのパーミッション設定を実行停止にする。


●qmail-1.03のインストール

@必要なファイル群をダウンロードし解凍。
qmail    ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
patchfile  ftp://ftp.nlc.net.au/pub/unix/mail/qmail/qmail-data-localtime.patch

A解凍したqmailにパッチをあてる(data-localtime.patch)。
qmail-1.03のディレクトリにパッチファイルを置き、そのディレクトリで
# patch < パッチファイル名
すると date822fmt.c にパッチがあたる。

B/var/qmail/ディレクトリを作る(パーミッションは755=rwxr-xr-x)。

Cユーザ、グループの作成
まず、/etc/shellsファイルに/bin/trueを追加しておく。
グループ
nofiles
qmail
ユーザ
alias(/bin/bash、/var/qmail/alias、nofiles)←(シェル、ホームディレクトリ、所属グループ)
qmaild(/bin/true、/var/qmail、nofiles)
qmaill(/bin/true、/var/qmail、nofiles)
qmailp(/bin/true、/var/qmail、nofiles)
qmailq(/bin/true、/var/qmail、qmail)
qmailr(/bin/true、/var/qmail、qmail)
qmails(/bin/true、/var/qmail、qmail)

D展開したqmailのディレクトリ(/qmail-1.03/)で
# make
# make man
# make setup
# make check
これで /var/qmail/ にインストールされる。

E/var/qmail/control/のファイルを設定するスクリプトを実行(実行ディレクトリは/qmail-1.03/のまま)
# ./config-fast ns.kaisha.co.jp (config-fastは実行ファイルにしておく)
これで、qmailはホストns、ドメインkaisha.co.jpあてのメールを受け取ることができるようになる。

Fエイリアスの登録
qmailではrootあてなどのメールは直接受け取れないので、代行ユーザーに転送するようにする。
実行ディレクトリを /var/qmail/alias/ に移して、以下のファイルを作成する。
# touch .qmail-postmaster
# touch .qmail-mailer-daemon
# touch .qmail-root
# chmod 644 .qmail*  (以上のファイルのパーミッションの設定=rw-r--r--)
作成したこれらのファイルに「&foo@another.co.jp」等と書き込んでおくと、foo@another.co.jpに転送される。

G起動ファイルのコピー(/var/qmail/boot/home を /var/qmail/ に rc名でコピー)
実行ディレクトリを /var/qmail/boot/ に移して
# cp home ../rc
デフォルトではMailbox形式で起動するようになっている。

Hqmail デーモンの起動(手動起動)
# csh -cf /var/qmail/rc &

シェルスクリプトで@からGまで自動実行
まず、ディスクトップに/qmailフォルダを作り、ここにダウンロードした圧縮ファイルqmail-1.03.tar.gzとlocaltime.patchを置いておく。

#! /bin/bash

f1="qmail-1.03"
f2="localtime.patch"

cd /qmail
gzip -d $f1.tar.gz
tar xvf $f1.tar
mv $f2 /qmail/$f1
cd /qmail/$f1
patch < $f2

mkdir -m 755 /var/qmail

groupadd nofiles
groupadd qmail

useradd -g nofiles -d /var/qmail/alias -s /bin/bash alias
useradd -g nofiles -d /var/qmail -s /bin/true qmaild
useradd -g nofiles -d /var/qmail -s /bin/true qmaill
useradd -g nofiles -d /var/qmail -s /bin/true qmailp
useradd -g qmail -d /var/qmail -s /bin/true qmailq
useradd -g qmail -d /var/qmail -s /bin/true qmailr
useradd -g qmail -d /var/qmail -s /bin/true qmails

make
make man
make setup
make check
./config-fast $HOSTNAME

cd /var/qmail/alias
touch .qmail-postmaster
touch .qmail-mailer-daemon
touch .qmail-root
chmod 644 .qmail*

cd /var/qmail/boot
cp home ../rc

 

●qpopper3.0.2のインストール(Mailbox形式)

・/usr/sbin/sendmailがインストールで必要となるので、パーミッションを実行可能に戻しておく(起動はしなくてよい)。
・ftp://ftp.qualcomm.com/eudora/servers/unix/popper/よりqpopper3.0.2をダウンロード→解凍する。
・# ./configure --enable-home-dir-mail=Mailbox --enable-specialauth
・# make
・できた ./popper/popper を /usr/sbin/ にコピー。所有 root 755(rwxr-xr-x)
・/usr/sbin/sendmailのパーミッションを実行停止にする。

・xinetdの設定(/etc/xinetd.d/pop-3)
service pop3
{
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/sbin/popper
server_args = -s
only_from += *.*.*.*  (*.*.*.*には適切なアドレスを記入)
}

APOP仕様の場合
・# ./configure --enable-apop=/etc/pop.auth --with-popuid=pop --enable-home-dir-mail=Mailbox --enable-specialauth
・# make
・できた ./popper/popper と ./popper/popauth を /usr/sbin/ にコピー。
/usr/sbin/popper  所有 root 755(rwxr-xr-x)
/usr/sbin/popauth 所有 pop  4711(SUIDrwx--x--x)
・# /usr/sbin/popauth -init (APOPで使用するデーターベースファイルを初期化する)
●APOPのユーザー登録
# /usr/sbin/popauth -user *** (削除は# /usr/sbin/popauth -delete ***)


●各種設定

@セキュリティ(tcpserverの導入)
qmailではtcoserverを推奨しているので、xinetdではなくtcpserverを使うことにする。

・インストール
http://cr.yp.to/ucspi-tcp.html
/ucspi-tcp/install.html などを参照しながら、最新のものをダウンロード。
いまのところ ucspi-tcp-0.88.tar.gz が最新。
解凍、展開したら、
# make
# make setup check
/usr/local/bin/にtcpserver、tcpclient、tcprules、tcprulescheckがインストールされる。

・起動スクリプト
/etc/rc.d/rc.localの最後に次の内容を書き込んでおく。
/usr/local/bin/tcpserver -x /etc/qmail/rules.cdb -u 501 -g 500 0 smtp /var/qmail/bin/qmail-smtpd &
    /etc/qmail/rules.cdbは、アクセスのコントロールを行うファイル。
    -u 501は、qmaildのユーザーID。適切な値に変えておくこと。
    -g 500は、nofilesのグループID。適切な値に変えておくこと。
手動で起動する場合も、これを実行してやればよい。

・アクセス制御ファイルの作成
/etc/qmail/rules.txtを作る。
    127.0.0.1:allow,RELAYCLIENT=””
    192.168.0.:allow,RELAYCLIENT=””
    *.*.*.*:allow,RELAYCLIENT=””   (*.*.*.*の部分にはリレーを許可するIPアドレスを入れる)
    :allow
内容を書き込んだら、次を実行してrules.cdbを作る。
# /usr/local/bin/tcprules /etc/qmail/rules.cdb /etc/qmail/rules.tmp < /etc/qmail/rules.txt

A仮想ドメインの使用
・/var/qmail/control/rcpthostsファイルに受け付けるドメインを書き込む。
kaisha.co.jp
kaisha1.co.jp
kaisha2.co.jp
・/var/qmail/control/virtualdomainsファイルを作り、仮想ドメインをだれが処理するか記述する。
kaisha1.co.jp:user1
kaisha2.co.jp:user2
・qmail-sendにHUPシグナルを送り、以上の設定を有効にしておく。
・***@kaisha1.co.jpに来たメール(***はユーザーや適当な名称)をuser1が受け取るには、/home/user1/に
.qmail-***というファイルを作成し、以下の内容を書き込んでおく。
/home/user1/Mailbox.
これで、user1のMailboxファイルに***@kaisha1.co.jpあてのメールが届くようになる。
user3に転送したい場合は、&user3@kaisha.co.jpと書き込んでおくと、user3のMailboxファイルに***@kaisha1.co.jpあてのメールが届くようになる。
(***は別の仮想ドメインあてのものと重なってもよい。)

Bqmailデーモンが起動時に自動起動するようにする。
/etc/rc.d/rc.localファイルの最後に次の内容を加える。
# qmail boot-up
if [ -f /var/qmail/rc ]
then
/bin/csh -cf /var/qmail/rc &
fi



第二部 sendmailからpostfixに切り替える
(FedoraCore2の場合)

FedoraCore2ではデフォルトのMTAがsendmailになっているので、これをpostfixに切り替える。
sendmailサービスをストップする。
# /usr/sbin/alternatives --config mta
ここでpostfixに切り替える。
sendmailサービスが消えて、postfixサービスが登録される。

●設定ファイル

Maildir形式、SSL/TLS(saslauthdサービス)認証使用。
@/etc/postfix/aliases
これはsendmailと同じもの。転送 root: foo 等。
編集したら、# newaliases (newaliases.postfixにリンクしている)を実行しておく。

A/etc/postfix/master.cf
postfix全体の制御。配送に利用する様々なサービス(/usr/libexec/postfix/にある。smtpやlocal、virtualなど。)をコントロールする。

B/etc/postfix/main.cf(『FedoraCore2』p456〜)  デフォルト値は、main.cf.default参照。
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
myhostname = p2-2.onjp.net 自ホスト
mydomain = ns.kaisha.cp.jp ドメイン
inet_interfaces = 333.139.162.226 192.168.0.1 メールを受け付けるインターフェイス。この場合allでもよい。これがlocalhostだと外部からのメールは受け付けなくなる。
mydestination = $myhostname, localhost.$mydomain どの宛先のメールを自ホストで最終的に受け取るか。
unknown_local_recipient_reject_code = 450
mynetworks_style = host 信頼できるネットワーク(無条件で受け付ける=リレー許可)。デフォルトはsubnet。
mynetworks = 192.168.0.0/24, 127.0.0.0/8 信頼できるネットワーク
#relay_domains = $mydestination 最終的な宛先ではないが中継してかまわない宛先
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
home_mailbox = Maildir/ ユーザーのメールボックスにmaildir形式で配送(~/Maildir/new/)
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.0.18/samples
readme_directory = /usr/share/doc/postfix-2.0.18/README_FILES

smtpd_sasl_auth_enable = yes
#smtpd_sasl_security_options = noanonymous, noplaintext
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions =
permit_mynetworks
permit_auth_destination
permit_sasl_authenticated
reject

smtpd_tls_cert_file = /usr/share/ssl/certs/kaisha.pem
smtpd_tls_key_file = /usr/share/ssl/certs/kaisha.pem
#smtpd_tls_session_cash_database = sdbm:/etc/postfix/smtpd_scache
smtpd_tls_loglevel = 3
smtpd_use_tls = yes


●バーチャルドメイン
/etc/postfix/virtualの編集
bbb.com anything
info@bbb.com user1
postmaster@bbb.com postmaster

ccc.com anything
info@ccc.com user2
postmaster@ccc.com postmaster

編集したら、# postmap /etc/postfix/virtual

●pop3関係
FedoraCore2では、dovecotサービスを使う。
/etc/dovecot.confの編集
protocols = imap imaps pop3 pop3s
……………
ssl_disable = no
ssl_cert_file = /usr/share/ssl/certs/kaisha.pem
ssl_key_file = /usr/share/ssl/certs/kaisha.pem

●SSL関係
証明書の作成
# cd /usr/share/ssl/certs
# make kaisha.pem

●ポート関係
995/tcpはinput、outputともに開けておく。(pop3+SSLに必要)
465/tcpも同様。(SMTP over SSL)
25/tcpも同様。(サーバー間のSMTP)
110/tcpは閉じてよい。


●windowsクライアント側の設定
アカウント→サーバー  送信メールサーバー 「認証が必要」をチェック
      →詳細設定  SMTP 25  「SSLが必要」をチェック
               POP3 995  「SSLが必要」をチェック


履歴 2004/11 修正およびpostfixの追加