自宅サーバーでウェブを公開できるようになれば、やはり次はメールサーバーも立ち上げたくなるもの。
ウェブ同様、ディスク容量もアカウント数も全く制限無しにメールが使えるようになります。
ただし、メールサーバーを立ち上げるとは、「第三者に悪用され、知らない間にスパム発信基地になっている」という恐れが常につきまといます。 この辺りの知識や情報はネット上に数多く掲載されていますので、各自勉強しておいてください。
VineLinuxには、「postfix」というメールサーバーソフトが標準でインストールされています。しかし、あえてここでは「postfix」は使わず、実績のある「qmail」でメールサーバーを構築します。 「qmail」を使う理由は「セキュリティーホールが非常に少なく確実な動作実績がある」という有名文句はもちろん、何より私自身が数年前から「qmail」しか使ったことがなく「postfix」については、よくわからない!というのが実情です。
「qmail」でメールサーバーを構築するためには、「ソースファイルからのコンパイル」という何やらマニアックな作業が必要となります。が、こういった作業は 大変有意義なLinuxの勉強にもなりますので、じっくりと取り組んでみてください。
※メールアドレスは ユーザー名@ドメイン名 と通常のプロバイダのメールアドレス形式と全く同様となります。あなたのドメイン名が「hoge.mydns.jp」だった場合、ユーザー「www」のメールアドレスは「www@hoge.mydns.jp」です。
※ソースファイルからのコンパイルを行うには、サーバーマシンにコンパイラ(gcc)がインストールされている事が必要です。コンパイラのインストールは gccのインストール をご覧下さい。
1.必要ファイルのダウンロード
2.専用ユーザーの作成
3.qmailのインストール
4.tcpseverのインストール
5.checkpasswordのインストール
6.pbs4qのインストール
7.自動起動用スクリプトの編集と起動
8.ルータの設定
9.動作テスト
1.必要ファイルのダウンロード
以下のファイルを全てダウンロードし、サーバー内の適当なディレクトリに置いてください。
ここでは例として /usr/local/src/qmail を作成し、そこにファイル一式を置きます。
qmail.sh
qmail-1.03.tar.gz
qmail-date-localtime.patch
checkpassword-0.90.tar.gz
ucspi-tcp-0.88.tar.gz
pbs4q-0.0.4.tar.gz
qmaild
2.専用ユーザーの作成
qmailは、独自のユーザー/グループで動作するようになっています。
ユーザーの作成は 「qmail.sh」を使えば、一括で作成できます。
ダウンロードしたファイル一式を置いたディレクトリに移動して「root」で次のコマンドを打ち込んでください。
[root@www qmail]# chmod 755 qmail.sh
[root@www qmail]# ./qmail.sh
|
これで必要なユーザー/グループが作成されます。
3.qmailのインストール
続いてqmail本体のインストールを行います。
※ qmailの展開
|
[root@www qmail]# tar xvzf qmail-1.03.tar.gz
|
※ 時間表示を日本時間に合わせるためのパッチを当てる
[root@www qmail]# cp qmail-date-localtime.patch ./qmail-1.03
[root@www qmail]# cd qmail-1.03
[root@www qmail-1.03]# patch < qmail-date-localtime.patch
|
※ コンパイルとインストール
[root@www qmail-1.03]# make
[root@www qmail-1.03]# make setup check
|
※ インストール後の設定
・ドメイン名の設定を行います。ダイナミックDNSを利用してドメインを取得している場合は
そのドメイン名をそのまま設定して下さい。(以下の hoge.mydns.jp の箇所はご自分のドメイン名に読み替えてください)
[root@www qmail-1.03]# ./config-fast hoge.mydns.jp
|
・起動スクリプトのコピー
qmailには起動スクリプトの雛形が入っているので、それをコピーします。
[root@www qmail-1.03]# cp /var/qmail/boot/home /var/qmail/rc
|
・起動スクリプトの書き替え
コピーしたスクリプトの一部を書き替えます。テキストエディタ「vi」でスクリプトを開き、「./Mailbox」を「./Maildir/」と書き替えます。(最後の / [スラッシュ] を忘れないよう注意)
*ここでは、受信したメールをどのように保存するかを指定しています。「./Maildir/」とは受信したメールを各ユーザーホームディレクトリ内のメールディレクトリに保存します。
[root@www qmail-1.03]# vi /var/qmail/rc
qmail-start ./Mailbox splogger qmail
↓ ↓ ↓
qmail-start ./Maildir/ splogger qmail
|
・受信側設定
受信出来るホスト名は、/var/qmail/control/locals で設定を行います。
「vi」でファイルを開き、次の用に編集します。
[root@www qmail-1.03]# vi /var/qmail/control/locals
hoge.mydns.jp
localhost
|
・送信側設定
同様に送信側の設定を行います。送信側設定ファイルは /var/qmail/control/rcpthosts ですので
「vi」でファイルを開き、次の用に編集します。
[root@www qmail-1.03]# vi /var/qmail/control/rcpthosts
hoge.mydns.jp
localhost
|
4.tcpserverのインストール
qmail本体の次にヘルパーデーモンであるtcpserverをインストールします。
※ tcpserverの展開
|
[root@www qmail]# tar xvzf ucspi-tcp-0.88.tar.gz
|
※ コンパイルとインストール
[root@www qmail]# cd ucspi-tcp-0.88
[root@www ucspi-tcp-0.88]# make
[root@www ucspi-tcp-0.88]# make setup check
|
※ smtpルールデータベースの作成
不正中継が行われないようにsmtp専用のルールデータベースを作成します。データベースの
元となるテキストファイル /etc/tcp.smtp.txt を作成します。
テキストエディタで赤文字の部分を書き込みます。このルールを設定しておけば、/var/qmail/control/locals で指定したホスト以外からのメールは受け付けなくなります。
[root@www ucspi-tcp-0.88]# vi /etc/tcp.smtp.txt
127.0.0.1:allow,RELAYCLIENT=""
:allow
|
※ 作成したテキストファイルからデータベースを生成します。(画面では2行に分かれていますが、実際には1行で打ち込んでください)
|
[root@www ucspi-tcp-0.88]# /usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp.txt
|
データベースである /etc/tcp.smtp が出来ていればOKです。
)
[root@www ucspi-tcp-0.88]# ls /etc/tcp.smtp.cdb
/etc/tcp.smtp.cdb
|
5.checkpasswordのインストール
checkpasswordはPOP認証に必要なツールです。
※ tcpserverの展開
|
[root@www qmail]# tar xvzf checkpassword-0.90.tar.gz
|
※ コンパイルとインストール
[root@www qmail]# cd checkpassword-0.90
[root@www checkpassword-0.90]# make
[root@www checkpassword-0.90]# make setup check
|
6.pbs4qのインストール
qmai用 POP before SMTPツール pbs4q をインストールします。
smtpの設定では、外部からのメールは一切受け付けないようにしましたが、このままでは、外部からSMTPサーバーにアクセスしてのメール送信は一切出来ません。
POP before SMTPとは、一旦メールを受信したIPアドレスを記録しておき、一定時間の間だけ、そのIPアドレスからの中継が行える仕組みです。
※ pbs4qの展開
|
[root@www qmail]# tar xvzf pbs4q-0.0.4.tar.gz
|
※ コンパイルとインストール
[root@www qmail]# cd pbs4q
[root@www pbs4q]# make
[root@www pbs4q]# make install
|
7.自動起動用スクリプトの編集と起動
最初にダウンロードしたファイル中の「qmaild」が自動起動用スクリプトですので、これを /etc/rc.d/init.d にコピーします。
※ qmaildのコピー
|
[root@www qmail]# cp qmaild /etc/rc.d/init.d/
|
※ qmaildユーザーのUID/GIDを調べる
以下のコマンドで、qmaildユーザーのUID及びGIDを調べます。パスワードファイルの内容が表示されますので「qmaild」から始まる行を探してください。 この中の黄色の文字で示した数字が「UID」赤色の文字で示した数字が「GID」となります。
[root@www qmail]# cat /etc/passwd
・
qmaild:x:501:501::/var/qmail:/bin/false
・
|
※ qmaildの編集
/etc/rc.d/init.d/qmaild を実際の環境に合わせて書き替えます。書き替える箇所は
<UID> = 実際のUID
<GID> = 実際のGID
<DOMAINNAME> = 実際のドメイン名
です。
[root@www qmail]# vi /etc/rc.d/init.d/qmaild
#!/bin/sh
#
# description: QMAIL SMTP & POP3 SERVER
# processname: qmaild
# pidfile: /var/run/qmaild.pid
# filename /etc/rc.d/init.d/qmaild
#
# Source function library.
. /etc/rc.d/init.d/functions
# See how we were called.
case "$1" in
start)
echo -n "Starting qmaild: "
/usr/local/bin/tcpserver -q -l -H -R -x /etc/tcp.smtp.cdb \
-c 100 -u <UID> -g <GID> 0 smtp /usr/local/bin/pbs4q \
/var/qmail/bin/qmail-smtpd 2>&1 \
/var/qmail/bin/splogger smtpd &
/usr/local/bin/tcpserver -q -l -H -R 0 pop3 \
/var/qmail/bin/qmail-popup <DOMAINNAME> \
/bin/checkpassword /usr/local/bin/pbs4q /var/qmail/bin/qmail-pop3d Maildir 2>&1 \
/var/qmail/bin/splogger pop3d &
/var/qmail/rc &
echo
touch /var/lock/subsys/qmaild
;;
stop)
echo -n "Shutting down qmail: "
kill $(/sbin/pidof tcpserver)
kill $(/sbin/pidof qmail-send)
echo
rm -f /var/lock/subsys/qmaild
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {startstoprestart}"
exit 1
esac
exit 0
|
※ qmaildのパーミッション変更
編集したqmaildファイルに実行権限を与えます。
[root@www qmail]# chmod 755 /etc/rc.d/init.d/qmaild
|
※ postfixの停止
標準で入っている「postfix」が動いている場合は停止します。また、次回起動時に自動起動しないように自動起動設定をオフにしておきます。
[root@www qmail]# service postfix stop
[root@www qmail]# chkconfig postfix off
|
※ sendmailの置換
CGIなどからよく使う「sendmail」を「qmail」付属のものと置換します。
[root@www qmail]# mv /usr/sbin/sendmail /usr/sbin/sendmail.old
[root@www qmail]# mv /usr/lib/sendmail /usr/lib/sendmail.old
[root@www qmail]# chmod 600 /usr/sbin/sendmail.old
[root@www qmail]# ln -s /var/qmail/bin/sendmail /usr/lib/sendmail
[root@www qmail]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
|
※ inetd 設定変更
VineLinuxの標準設定では、POP3サーバーは inetdからqpopperが起動されるようになっているのでこれを解除します。
inetdの設定ファイルは /etc/inetd.conf なので、これをテキストエディタで開き編集します。
pop-3 で始まる行の行頭に「#」を付けて、この行をコメント化して保存
[root@www qmail]# vi /etc/inetd.conf
#pop-3 stream tcp nowait root /usr/sbin/tcpd in.qpopper
|
編集後、inetdの再起動
[root@www qmail]# service inet restart
|
※ ユーザー用メールディレクトリの用意
ユーザー用のメールディレクトリを用意します。メールディレクトリの作成は、そのユーザーになり、ホームディレクトリ上で /var/qmail/bin/maildirmake Maildir コマンドを使用します。作成後、「ls」コマンドで「Maildir」が作成されているか確認して下さい。
例として、「www」ユーザーのメールディレクトリの作成方法です
[root@www qmail]# su - www
[www@www www]$ /var/qmail/bin/maildirmake Maildir
[www@www www]$ ls
Maildir/ rpm/ src/
|
※ エリアスの作成
「root@」「mailer-daemon@」「postmaster@」等、主な管理用アカウントには一括して受信できるエリアスを設定しておきます。
・aliasユーザーになる(必ず root から実行する事)
[root@www qmail]# su - alias
|
・先ほど作成した「www」アカウントに転送するように設定ファイルを作成する。
[alias@www alias]$ echo "&www" > .qmail-root
[alias@www alias]$ echo "&www" > .qmail-mailer-daemon
[alias@www alias]$ echo "&www" > .qmail-postmaster
|
外部のメールアドレスに転送したい場合は、 "&www" の箇所を "&hoge@hogehge.hoge.jp" のようにメールアドレスを書けばよい。
※ qmailの起動
いよいよqmailの起動です。「root」で次のコマンドを打ち込んでください。「Starting qmaild:」と表示されれば無事起動しています。
[root@www qmail]# service qmaild start
Starting qmaild:
|
・「ps」コマンドでプロセスの確認
念のためプロセスの確認。次のプロセスが qmail 関連です。
[root@www qmail]# ps ax
1600 pts/0 S 0:00 /usr/local/bin/tcpserver -q -l -H -R -x /etc/tcp.smtp
1601 pts/0 S 0:00 /usr/local/bin/tcpserver -q -l -H -R 0 pop3 /var/qmai
1602 pts/0 S 0:00 qmail-send
1604 pts/0 S 0:00 splogger qmail
1605 pts/0 S 0:00 qmail-lspawn ./Maildir/
1606 pts/0 S 0:00 qmail-rspawn
1607 pts/0 S 0:00 qmail-clean
|
・自動起動設定
システム起動時にqmailも自動で起動するよう設定します。
[root@www qmail]# chkconfig qmaild on
|
8.ルータの設定
ウェブ(http)と同様に外部との通信のためルータのポートを開ける事が必要です。
開けるポートは
25番 (smtp)
110番 (pop3)
の2ポートです。
9.動作テスト
・コマンドラインから、自分のプロバイダのアドレスなどに簡単な送信テストを行ってみます。
日常使っているメーラーで空メールが受信できれば成功です。
また、メーラーにプロバイダのメールと同じようにアカウントを設定し、送信、受信のテストを行ってください。
POP before SMTP を利用しているため、メールを送信する場合は、先に受信動作を行ってから送信して下さい。
|
[root@www qmail]# echo to: myname@xxx.xxx | /var/qmail/bin/qmail-inject
|
※最後に
メールアドレスの追加方法です。
メールアドレスの追加には2つの方法があります。
1.エリアスとしてメールアドレスを追加
2.実際のユーザーアカウントとしてメールアドレスを追加
1.エリアスとしてメールアドレスを追加
メールサーバーを自分で運営すれば「info@」とか「admin@」とか「webmaster@」とか、いかにも管理用というアドレスがいくらでも使い放題です。通常なら、一つのメールアドレス毎にユーザーアカウントを作成して・・・となるのですが、一人で管理する場合、いちいち別アカウントをたくさん設定して受信するのは大変です。その場合は
「エリアス」としてメールアドレスを設定すれば簡単です。先に「エリアスの作成」を行いましたが、要はこれの事です。「abc@xxx.xxx」というアドレスを追加したいが、実際に受信するのは「www@xxx.xxx」であるという場合、先と同じく次のようにします。
[root@www qmail]# su - alias
[alias@www alias]$ echo "&www" > .qmail-abc
|
2.実際のユーザーアカウントとしてメールアドレスを追加
メールアドレスを実際のユーザーアカウントとして作成する方法です。例として「test」ユーザーを追加してみます。
・新しい「test」アカウントの作成
[root@www root]# useradd test
|
・パスワードの設定
「New password:」の後に パスワードを入力します(入力しても画面には表示されません)
[root@www root]# passwd test
Changing password for user test
New password:
|
「Retype new password:」の後に 再度同じパスワードを入力します。
「passwd: all authentication tokens updated successfully」と表示されればパスワードは設定されました。
[root@www root]# passwd test
Changing password for user test
New password:
Retype new password:
passwd: all authentication tokens updated successfully
|
・メールディレクトリの作成
ユーザーのホームディレクトリに移動し、メールディレクトリを作成します。
[root@www root]# cd ~test
[root@www test]# /var/qmail/bin/maildirmake Maildir
|
・所有者の変更
作成したメールディレクトリの所有者を「test」に変更します。
*変更の際 −R オプションを付け忘れると、サブフォルダの属性が変更しないので注意してください。
*この例では「root」で作業を行っているため所有者の変更が必要ですが、「test」ユーザー自身で
メールディレクトリを作成した場合、所有者の変更はいりません。
[root@www test]# chown -R test.test Maildir
|
以上で基本的なメールサーバーの構築は完了です。
サーバーというものは、実際に運営開始した時がさまざまな勉強の始まりです。今後はさらに細かな設定等を書き加えていきたいと思いますので、時間があればちょこちょこのぞいて見てください。
| ページ先頭に戻る |
|