Home > Linux > qmailをCentOSにインストールしてphpから使えるようにする

qmailをCentOSにインストールしてphpから使えるようにする

今時sendmailなんて使えないのでqmailに挑戦します。
qmailは安全で、信頼できて、高性能で、 簡潔な メイル配送エージェント(MTA) です。(公式より)

参考にしたのはこのあたりのサイトです。

http://www.atmarkit.co.jp/flinux/rensai/qmail01/qmail01a.html

CentOS5.2を使いました。
以下、使えるようになるまでの細かい説明を省いた作業履歴。

cd /usr/local/src/
wget ftp://ftp.jp.qmail.org/qmail/qmail-1.03.tar.gz
wget http://cyberam.dip.jp/linux_server/mail/qmail-date-localtime.patch
tar zxvf qmail-1.03.tar.gz
cd qmail-1.03/

ダウンロード&解凍。
そしてパッチを当てます。

patch -p1 < ../qmail-date-localtime.patch

コンパイルの前に必要なユーザーとグループの作成を行います。

mkdir /var/qmail
groupadd nofiles
useradd -g nofiles -d /var/qmail/alias -s /bin/false alias
useradd -g nofiles -d /var/qmail -s /bin/false qmaild
useradd -g nofiles -d /var/qmail -s /bin/false qmaill
useradd -g nofiles -d /var/qmail -s /bin/false qmailp
groupadd qmail
useradd -g qmail -d /var/qmail -s /bin/false qmailq
useradd -g qmail -d /var/qmail -s /bin/false qmailr
useradd -g qmail -d /var/qmail -s /bin/false qmails

コンパイルします。

make setup

ここでエラーが出るので調べてパッチをあてることにします。

cd ..
wget http://www.stackasterisk.jp/tech/systemConstruction/qmail01/qmail-glibc.patch
cd qmail-1.03/
patch -s <../qmail-glibc.patch

もういちど

make setup
make check

おっけーですね。

./config-fast mail.sj6.org

(mail.sj6.orgは適当につけてください。mail.example.comとかでいいかも)

これで必要なものが/var/qmailに作成されました。

postmaster、MAILER-DAEMON、rootあてのメールを/var/qmail/aliasに保存するための設定

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

起動スクリプトを設置し、起動

cp /var/qmail/boot/home /var/qmail/rc
/var/qmail/rc &

動作を確認

ps -aef | grep qmail
qmails   29478 24449  0 15:53 pts/0    00:00:00 qmail-send
qmaill   29479 29478  0 15:53 pts/0    00:00:00 splogger qmail
root     29480 29478  0 15:53 pts/0    00:00:00 qmail-lspawn ./Mailbox
qmailr   29481 29478  0 15:53 pts/0    00:00:00 qmail-rspawn
qmailq   29482 29478  0 15:53 pts/0    00:00:00 qmail-clean

メールを出してみる

echo to: root@mail.sj6.org | /var/qmail/bin/qmail-inject

自分宛
gmailにも

echo to: sayjiroあっとまーく(本当は@)gmail.com | /var/qmail/bin/qmail-inject

おお!空メールがgmailに来ました!(SPAM扱いだけど)

次にMaildirを使うために/var/qmail/rcを編集します。

vim /var/qmail/rc
qmail-start ./Mailbox splogger qmail

qmail-start ./Maildir/ splogger qmail

ディレクトリを作成します

/var/qmail/bin/maildirmake ~alias/Maildir
chown -R alias /var/qmail/alias/Maildir

各ユーザーのMaildirを作成(ユーザー名はMaildirを作りたい自分のサーバのユーザー名を適当に)

su ユーザー名
/var/qmail/bin/maildirmake ~/Maildir

新規ユーザー用にMaildirが生成されるようにする

/var/qmail/bin/maildirmake /etc/skel/Maildir

現在立ち上がっているqmailのプロセスを全てkillして再起動

kill xxxx xxxx xxxx xxxx(←本当はプロセスID)
/var/qmail/rc &

自分宛にメールを送信してみる

echo to: root@mail.sj6.org | /var/qmail/bin/qmail-inject

Maildir/newディレクトリに届くようになります。

次はqmailの起動用にtcpserverをインストールします。

tcpserverはユーザー名・IPアドレス・ドメイン名・同時接続数などを基に接続制限をかけることができる起動プロセスです。

cd /usr/local/src/
wget ftp://ftp.jp.qmail.org/qmail/ucspi-tcp-0.88.tar.gz
tar zxvf ucspi-tcp-0.88.tar.gz
cd ucspi-tcp-0.88
wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.errno.patch
wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.a_record.patch
wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/ucspi-tcp-0.88.nobase.patch
patch -s -p1 <./ucspi-tcp-0.88.errno.patch
patch -s -p1 <./ucspi-tcp-0.88.a_record.patch
patch -s -p1 <./ucspi-tcp-0.88.nobase.patch

インストールのいつもの作業+パッチを落としてきて当てます。

make
make setup check

インストールすると/usr/local/bin/配下にパッケージが入ります。

アクセス制御ファイルの基を/etc/tcp.smtpに作成します。

vim /etc/tcp.smtp
192.168.0.:allow,RELAYCLIENT=""
127.:allow,RELAYCLIENT=""

cdbファイルを作成します。

/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp

起動用のスクリプトを作成します。

vim /etc/init.d/qmail
#!/bin/sh
#
# qmail: /var/qmail
PATH=/var/qmail/bin:/usr/local/bin:/bin:/usr/bin

[ -f /var/qmail/rc ] || exit 0

case "$1" in
  start)
        # Start daemons.
        echo "Starting qmail."
        csh -cf '/var/qmail/rc &'
        tcpserver -v -u [qmaildのUID] -g [nofilesのGID]-x /etc/tcp.smtp.cdb \
       0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail/bin/splogger smtpd 3 &
        echo
        touch /var/lock/qmail
        ;;
  stop)
        # Stop daemons.
        echo "Shutting down qmail."
        PID=`/bin/ps -aefw | grep qmail | awk '{print $2}'`
        if [ ! -z "$PID" ] ;  then
            /bin/kill ${PID} 1> /dev/null 2>&1
        fi
        echo
        rm -f /var/lock/qmail
        ;;
   *)
        echo "Usage: S99qmail {start|stop}"
        exit 1
esac

exit 0

パーミッションを設定し、

chmod 755 /etc/init.d/qmail

自動起動の設定をします。

ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc2.d/S99qmail
ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc3.d/S99qmail
ln -s /etc/rc.d/init.d/qmail /etc/rc.d/rc5.d/S99qmail

これでオッケー。
そしてphpはデフォルトでsendmailを使うようになっているので、php.iniを変更します。

vim /usr/local/lib/php.ini
;sendmail_path =

sendmail_path = /var/qmail/bin/qmail-inject

これでphpからqmailを呼び出すことができます!

関連記事

コメント:0

コメントフォーム
設定を保存する

トラックバック:0

この記事のトラックバックURL
http://www.sj6.org/qmail_install_to_centos_and_be_useful_php/trackback/

Home > Linux > qmailをCentOSにインストールしてphpから使えるようにする

フィードとか

ページの上へ