Back-home
PHP + sendmail / qmail + CGI
Top view / Search view / Administer

qmailの応用 2003/01/05 (Sun)

メール受信のために必要な設定とは

メールサーバーにメールが届くためには、smtpがリレーを拒否しないように設定する必要があります。
tcpserver(具体的には ucspi-tcp-VERSION.tar.gzをインストールし、ファイルsmtpd_rules.cdbが作成され、tcpserverが正常に起動している状態)を利用したqmailでは、リレーを許可するように

/etc/tcpserver/smtpd_rules
/var/qmail/control/rcpthosts

を変更します。
不正な"第三者中継"の被害例もありますので、LAN内部などに限定した利用を強く推奨します

smtpd_rules : IP アドレス、ドメイン名
rcpthosts : ホスト名

を指定できます。複数の場合、必ず改行します。また、rcpthostsでは、ワイルドカードを使用できますが、サブドメインなどをできるだけ詳細に入力した方がよいです。

例  /etc/tcpserver/smtpd_rules
----------------------------------
127.0.0.1:allow,RELAYCLIENT=""
192.168.1.:allow,RELAYCLIENT=""

=.example1.co.jp:allow,RELAYCLIENT=""
=.noexistence.ne.jp:allow,RELAYCLIENT=""


210.130.52:allow,RELAYCLIENT=""
210.145.:allow,RELAYCLIENT=""

:allow
-----------------------------------
イントラネット(LAN)を使用するとき、ローカルIP 192.168.1. 192.168.など入力します。127.0.0.1 はlocalhost
:allow を追加することで、/var/qmail/control/rcpthosts も許可されます。

例 /var/qmail/control/rcpthosts
--------------------------
dns.example.jp
po.testexample.jp
.noexistence.or.jp

---------------------------
dns.example.jp :qmailのホスト名です。

/etc/tcpserver/pop3d_rules からpop3d_rules.cdbを作成し、pop3d ないし apop を起動すると、サーバー内のメールをクライアントにダウンロードできます。

例 /etc/tcpserver/pop3d_rules
----------------------------
127.0.0.1:allow
192.168.1.:allow
210.153.1.:allow
202.222.94.:allow
:deny
-----------------------------
ローカルIP、グローバルIP(指定プロバイダーないし固定IP)からのみ接続できる設定です。
なお、deny ⇒ allow に変更すると、サーバーのユーザーネームとパスワードでメール受信、サーバー内アクセスすべて可能となり、しかもパスワードはインターネット上、平文(暗号化なし)で通知されますのでとても危険です。
qmailをインターネット上で利用する際、apop(受信時、暗号化されたメール受信専用パスワードを用いる)を推奨します。checkpw-VERSION.tar.gz のインストールが必要です。




php+sendmail 2003/01/12 (Sun)

プログラム・iniファイルの場所

/usr/sbin/sendmail
/usr/bin/perl
/usr/local/lib/php.ini
/var/qmail/bin/sendmail

OS FreeBSDでは、MTAのデフォルトとして sendmail が用いられています。OS インストール時にセキュリティプロファイル(Firewall) mediumを選択すると、sendmailは自動起動します。

ページ言語 php で書かれた PHP-Nuke, osCommerceなどのオープンソース上で、メール送受信を有効にするために、最初に、php.iniを編集します。

# vi /usr/local/lib/php.ini

614行目あたり
;;;;;;;;;;;;;;;;;;;;;;;;;
; Module Settings
;;;;;;;;;;;;;;;;;;;;;;;;;

[mail function]

;sendmail_path =

の行頭 コメント# を削除し、以下のように設定します。

sendmail_path = /usr/sbin/sendmail -t

php.iniの変更を有効にするため、再起動します。
apacheサーバーが起動している状態でDocumentRoot内に ファイル名test.phpの関数を作成しアクセスします。

    <?php
    phpinfo( );
    ?>

phpの環境設定が表示されますので、項目 standard 内にある "Path to sendmail"などチェックします。




php+qmail 2003/01/12 (Sun)


次に、メールサーバーに qmail を使用する場合、sendmailの自動起動などを停止します。

# ps ax | grep sendmail

プロセスID [PID]を調べて、

# kill 数字[PID}

停止を確認します。

# ps ax | grep sendmail
#

何も表示されなければ OK ですので、次に

# vi /etc/rc.conf
最終行に最も近いところにある

sendmail_enable="YES"

を変更します

sendmail_enable="NONE" (または、"NO")

編集後

# cd /usr/local/sbin/
# ls -la | more

mailwrapper,sendmail のパーミッションを記録し、

# chmod 0 mailwrapper
# chmod 0 sendmail

とします。また、

# mv -i sendmail sendmail.default

ファイル名を変更しておきます。

同様に、以下の2つのファイルも実行権などすべて停止します。
デフォルトのパーミッションを記録後、

# chmod 0 /usr/libexec/mail.local
# chmod 0 /usr/libexec/sendmail/sendmail

php.iniでの設定が有効となるように、qmailにsendmailとの互換性を与えます。

# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail

シンボリックリンク作成後、確認します。

# echo to:メールアドレス(ないしユーザー名) | /var/qmail/bin/sendmail -t

rootからのメールが受信できれば、テスト成功です。




qmailをpop before smtpで使うために 2003/01/16 (Sun)

qmailを"apop+pop befor smtp" ないし "pop before smtp" で使用するためには、フリーソフト relay-ctrlをインストールし、qmail設定の一部を変更します。

(relay-ctrl バージョン3 以上では 自動起動のためにフリーソース daemontools が必須です) 。
ソース入手先:

relay-ctrl-3.1.1.tar.gz
daemontools-0.76.tar.gz

最初に daemontools をインストールします。

# tar xvzf daemontools-0.76.tar.gz
# cd daemontools-0.76/admin/
# package/install

次に、relay-ctrl をインストールします。

# tar xvzf relay-ctrl-3.1.1.tar.gz
# cd relay-ctrl-3.1.1
# make
# ./installer

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

# mkdir /var/qmail/relay-ctrl
# chmod 700 /var/qmail/relay-ctrl

# mkdir /var/qmail/relay-ctrl/spool
# chmod 777 /var/qmail/relay-ctrl/spool

# mkdir /etc/relay-ctrl

設定します。

# echo "/var/qmail/relay-ctrl/" > /etc/relay-ctrl/RELAY_CTRL_DIR
# echo '900' > /etc/relay-ctrl/RELAY_CTRL_EXPIRY

接続IPアドレスのメモリー時間を秒単位で指定します(たとえば、900秒=15分)。指定時間内であれば、同一メールクライアント、ローカルネットであれば、2回目以降の "受信⇒送信" 操作は不要で、直ちに、送信のみ可能となります。しかし、通常のダイアルアップ接続では、グローバルIPアドレスは固定ではありませんので、指定時間内であっても、インターネット接続を一回切断すると、再度受信⇒送信" 操作が必要です。

接続IPアドレスのメモリーを定時的に整理するため、crontab を編集します。

# crontab [ -u "user" ] -e

ただし、環境変数 VISUAL (ないしEDITOR) で指定されているエディタがなければ、編集後自動インストールするオプション -e は無効ですので、

# cd /etc/crontab
の後、
*/5 * * * * /usr/local/bin/envdir /etc/relay-ctrl /usr/local/bin/relay-ctrl-age

これは5分毎にチェックする設定です。

tcpserver を停止します。
(具体的には ucspi-tcp-VERSION.tar.gzをインストールし、ファイルsmtpd_rules.cdbおよびapopd_rules.cdbが作成され、tcpserver 自動起動スクリプト(run file)があるサーバー)

# ps ax | grep tcpserver
smtpd および pop3d(apopdも同じ名称) 両方のPIDを確認し、killコマンドで停止します。

# kill [PID"smtpd"]
# kill [PID"pop3d"]

# ps ax | grep tcpserver
#

何も表示されないことを確認します。

qmail専用 tcpserver 自動起動スクリプト(run file)を編集します。
¥を改行に使用しないときは、[Enterキー][Returnキー]を使わないで一行で入力します。

# cd /usr/local/etc/rc.d/

//// tcpserver_smtpd.sh ////

#!/bin/sh

echo -n 'qmail-smtpd starting.'
/usr/local/bin/envdir /etc/relay-ctrl relay-ctrl-chdir ¥
/usr/local/bin/tcpserver -x /etc/tcpserver/smtpd_rules.cdb -v -u [qmail uid] -g [nofiles gid] 0 smtp ¥
relay-ctrl-check /var/qmail/bin/qmail-smtpd 2>&1 | ¥
/var/qmail/bin/splogger smtpd 3 &

//// tcpserver_apopd.sh ////

#!/bin/sh

echo -n 'qmail-apopd starting.'
/usr/local/bin/envdir /etc/relay-ctrl relay-ctrl-chdir ¥
/usr/local/bin/tcpserver -x /etc/tcpserver/pop3d_rules.cdb 0 pop3 /var/qmail/bin/qmail-popup [qmailのホスト名] /bin/checkapoppw ¥
relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1 | ¥
/var/qmail/bin/splogger apop 3 &

//// tcpserver_pop3d.sh ////

#!/bin/sh

echo -n 'qmail-pop3d starting.'
/usr/local/bin/envdir /etc/relay-ctrl relay-ctrl-chdir ¥
/usr/local/bin/tcpserver -x /etc/tcpserver/pop3d_rules.cdb 0 pop3 /var/qmail/bin/qmail-popup [qmailのホスト名] /bin/checkpassword ¥
relay-ctrl-allow /var/qmail/bin/qmail-pop3d Maildir 2>&1 | ¥
/var/qmail/bin/splogger pop3d 3 &

編集終了後、

# ls -la
    -rwxr-xr-x (755) 使用するファイル
    -rw-r--r-- (644) 使用しないファイル

でなければ chmod コマンドで変更します。

編集後、tcpserverを手動で起動します。

# /usr/local/etc/rc.d/tcpserver_smtpd.sh
# /usr/local/etc/rc.d/tcpserver_apopd.sh <= pop3d.shでなければ
# /usr/local/etc/rc.d/tcpserver_pop3d.sh <= apopd.shでなければ

    なお、同一ディレクトリ内の qmail.sh は qmail自体の自動起動スクリプトです。

# ps ax | grep tcpserver
# ps ax | grep qmail

正しく起動していることを確認します。

-----
他のインストールステップは、
「ステップ式サーバー構築入門 はじめての qmail 」 著者 中村文則 出版所 技術評論社 などでお確かめ下さい。




Next(+0) / Back(-0) / Search view / Log view / Administer

- Harpist note ver1.02 -