SaaSes の CentOS ではデフォルトでメール送信ができません。Sendmail の設定に失敗したため Sendmail の停止・アンインストール後、qmail をインストールして、それでメールの送信を行うことにしました。
今回は以下のサイトを参考にさせて頂きました。詰まった部分がありましたので、その部分を補いながらこちらで再度まとめさせて頂きます。
必要なディレクトリ・ユーザー・グループを作成する
1 2 3 4 5 6 7 8 9 10 | mkdir /var/qmail /usr/sbin/groupadd nofiles /usr/sbin/useradd -g nofiles -d /var/qmail/alias alias /usr/sbin/useradd -g nofiles -d /var/qmail -s /bin/false qmaild /usr/sbin/useradd -g nofiles -d /var/qmail -s /bin/false qmaill /usr/sbin/useradd -g nofiles -d /var/qmail -s /bin/false qmailp /usr/sbin/groupadd qmail /usr/sbin/useradd -g qmail -d /var/qmail -s /bin/false qmailq /usr/sbin/useradd -g qmail -d /var/qmail -s /bin/false qmailr /usr/sbin/useradd -g qmail -d /var/qmail -s /bin/false qmails |
qmail をインストールする
ディレクトリを移動します。
1 2 | cd /usr/local/src/ tar zxvf qmail-1.03.tar.gz |
qmail をダウンロードし解凍します。
1 | wget ftp://ftp.eu.uu.net/pub/unix/mail/qmail/qmail-1.03.tar.gz |
qmail-1.03 をダウンロードします。日本のミラーサイトからダウンロードできなくなっているため、海外のミラーサイトからダウンロードします。
1 | wget http://cyberam.dip.jp/linux_server/mail/qmail-date-localtime.patch |
qmail-glibc.patch をダウンロードします。こちらが無ければコンパイルに失敗します。このパッチも多くのサイトのものがダウンロードできなくなっていますが、以下のサイトからなら wget でダウンロードすることができます。
1 | wget http://sambist.ddo.jp/data/qmail-glibc.patch |
ダウンロードしてきたパッチを当てます。
1 2 3 | cd qmail-1.03/ patch -p1 < ../qmail-date-localtime.patch patch -s < qmail-glibc.patch |
コンパイル及び設定をします。ドメインは適当で良いそうです。
1 2 3 | make setup make check ./config-fast mail.example.com |
postmaster、MAILER-DAEMON、root 宛のメールを /var/qmail/alias に保存できるようにファイルの作成とパーミッションの設定を行います。
1 2 3 | cd /var/qmail/alias touch .qmail-postmaster .qmail-mailer-daemon .qmail-root chmod 644 .qmail* |
起動スクリプトの設置と起動を行います。
1 2 | cp /var/qmail/boot/home /var/qmail/rc /var/qmail/rc |
以下のコマンドで起動しているか確認できます。
1 | ps -aef | grep qmail |
以下のように動いていることが分かります。
1 2 3 4 5 6 | qmails 7942 2053 0 02:45 pts/0 00:00:00 qmail-send qmaill 7943 7942 0 02:45 pts/0 00:00:00 splogger qmail root 7944 7942 0 02:45 pts/0 00:00:00 qmail-lspawn ./Mailbox qmailr 7945 7942 0 02:45 pts/0 00:00:00 qmail-rspawn qmailq 7946 7942 0 02:45 pts/0 00:00:00 qmail-clean root 7956 2053 0 02:45 pts/0 00:00:00 grep qmail |
メールの送信テストは以下のようにできるようです。メールは迷惑メールフォルダに入っていることもありますので確認の際は気をつけましょう。
1 | echo to: info@example.com | /var/qmail/bin/qmail-inject |
今回はこのサーバーでメールの受信はしないため、特に設定をしませんが、参考サイトでは受信ができるように設定していますのでそちらを参考にしてください。ここからは送信するためだけの最小設定をしていきます。またスクリプトも必要最小限に改変しています。
qmail を自動起動できるように設定する
自動起動用のファイルを作成します。
1 | vi /etc/init.d/qmail |
起動用のシェルスクリプトを作ります。参考サイトでは tcpserver を入れていましたが、テストメールが送信できれば良く、また受信も行わないため、tcpserver の部分を省いておきました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #!/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 &' 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 |
作成したらパーミッションを設定します。
1 | chmod 755 /etc/init.d/qmail |
自動起動できるようにします。
1 2 3 | 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 |
rc スクリプトについては以下のページが参考になりました。
これでサーバーを再起動しても qmail が使えます。
1 | sendmail_path = /var/qmail/bin/qmail-inject |
PHP でメール送信テストをする場合は以下のようにします。
1 | php -r "mail('info@example.com', 'subject', 'body');" |
設定は以上になりますが、tcpserver がなくても問題がないかが心配です。ただメール送信できれば良い場合はこれで良いのでしょうか。詳しい方がいましたらアドバイス頂けると幸いです。
参考サイト
qmail のインストールに際して参考にしたサイトです。
- qmailをCentOSにインストールしてphpから使えるようにする | 適当な日々
- qmailを利用したメールサーバの構築 – Wiki of linux
- qmailインストール – PukiWiki
- @IT:Linux起動の仕組みを理解しよう[rcスクリプト編]
Sendmail の設定の際に参考にしたサイトは以下です。いろいろと勉強になりましたので、メモしておきます。
コメント