デジ物 記憶の断片・・・

IT企業勤めの会社員(44才)。デジタル物の趣味の記録。

Ads by Google 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

今更ながらの、qmail インストール・設定 (その4:完結編)  

今更ながらの、qmail インストール・設定 (その4)

仕事で Sendmailのリレー設定をすることになった。「あ、そう言えば、以前 qmailを DynamicDNSで立ち上げたっけ?…それを使ってリレーすれば良いか〜。」などと簡単に考えていた。
実際、前回(約1年前ですね)までに送受信は出来るようになっていたが、SPAMの踏み台に使われそうな状況だったので封印していたのでした。(^◇^;)ゞ

その続きを行ってみましたが…もう、すっかり忘れている。


前回は「Outbound Port25 Blocking」の問題はクリアになり、メールの送受信は出来るようになったものの、認証も何にも無かったため踏み台にされる恐れが大きかった。

とりあえず、現状のままで、

# /sbin/service qmail start

として、デーモンを開始。自宅から会社のアドレスにメールを送ろうとすると、

553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)

というエラーになってしまう。しかし、この状態でも自宅から自宅(自分自身)にはメールを送ることが出来る。???

色々と調べたところ、

/var/qmail/control/rcpthosts

ファイルの中に次のような記述があった。

 mail.myddns.dyndns.biz
 myddns.dyndns.biz

この定義は、「qmailの転送先として許可するドメイン」つまり、「RCPTヘッダに乗っても良いドメインを指定する。」と言う事らしい。
ナルホド…自分自身には転送できる状態だよね…試しにこうしてみた。

 mail.myddns.dyndns.biz
 myddns.dyndns.biz
 会社.co.jp
 bj9.so-net.ne.jp
 google.com

…全部、正常に送れる! また、ファイルを削除すれば全てを許可する。逆に中身を空にするとドコにも送れなくなる。(←実験した!)

悩んだ結果 SMTP認証に対応する、qmail を作成することにした。

とりあえず、現在の qmail はパッケージでインストールされているものか?ソースをコンパイルしたものか?それすら、良く分からないので、次のコマンドで確認。

# rpm -qa | grep qmail
#

よし、パッケージとしては入っていない。
次に、「じゃあ、ソースからコンパイルしているはずだか、前回入れた時のソースはどこにあるんだ?」

# find / -iname qmail*

で探してみたけど、qmail_1.0.3_package は見つかっても、ソースは展開された形跡が無い…???どう言うこっちゃ?。パッケージとしてはインストールされていないけど、rpm で見つからない…たぶん、パッケージを解凍して、ソースをコンパイルしたんだろう…

無難な所で、もう一度、smtp認証対応版をソースからコンパイルすることにしてみた。


まず、作業場所を確保。
# mkdir /usr/local/src/qmail-patch-smtp
# cd /usr/local/src/qmail-patch-smtp
# pwd
/usr/local/src/qmail-patch-smtp
#

次に、必要なファイルを持ってきて展開します。

# cp /root/qmail_1.0.3_package/qmail-smtpd-auth-0.31.tar.gz .
# cp /root/qmail_1.0.3_package/qmail-1.03.tar.gz .

# ll
合計 232
-rwxr--r-- 1 root root 220668 3月 5 16:30 qmail-1.03.tar.gz
-rw-r--r-- 1 root root 8798 3月 5 16:29 qmail-smtpd-auth-0.31.tar.gz

#tar zxvf qmail-1.03.tar.gz
  :
  :
#tar zxvf qmail-smtpd-auth-0.31.tar.gz
  :
  :

# ll
合計 248
drwxr-xr-x 2 root bin 12288 6月 15 1998 qmail-1.03
-rwxr--r-- 1 root root 220668 3月 5 16:30 qmail-1.03.tar.gz
drwxr-xr-x 2 takashi takashi 4096 5月 10 2002 qmail-smtpd-auth-0.31
-rw-r--r-- 1 root root 8798 3月 5 16:29 qmail-smtpd-auth-0.31.tar.gz

ここで、展開したソースに smtp認証のパッチを当てます。

# cd qmail-smtpd-auth-0.31
# cp README.auth base64.c base64.h ../qmail-1.03
# patch -d ../qmail-1.03 < auth.patch
patching file Makefile
patching file TARGETS
patching file qmail-smtpd.8
patching file qmail-smtpd.c
#

ココまでで、ソースの準備は完了。
次に、ひとつ上のディレクトリに戻って Makefileを作ります。内容はこんな感じ。

# cd ..
# pwd
/usr/local/src/qmail-patch-smtp
#

-Makefile-
SRC_PATH = ./qmail-1.03
TARGET_PATH = /var/qmail/bin
TARGET_BINNAME = qmail-smtpd-auth
SRC_BINNAME = qmail-smtpd

$(TARGET_BINNAME): $(SRC_PATH)/qmail-smtpd.c
$(MAKE) -C $(SRC_PATH) qmail-smtpd
cp $(SRC_PATH)/$(SRC_BINNAME) $(TARGET_BINNAME)
cp $(TARGET_BINNAME) $(TARGET_PATH)/$(TARGET_BINNAME)

-ここまで-

なんでも、qmail-1.03/qmail-smtpd.c ファイルの中の "#define AUTHCRAM" をコメントアウトして、クリアテキスト認証方式のみにしたほうが良いとか…

-qmail-1.03/qmail-smtpd.c-
 :
#include "fd.h"

/* #define AUTHCRAM */
#define MAXHOPS 100
 :
-ここまで-

これで準備完了。後はコンパイルとインストールです。

# make
 :
 :
ake[1]: 出ます ディレクトリ `/usr/local/src/qmail-patch-smtp/qmail-1.03'
cp ./qmail-1.03/qmail-smtpd qmail-smtpd-auth
cp qmail-smtpd-auth /var/qmail/bin/qmail-smtpd-auth
#

…「出ます ディレクトリ」ってなんやねん。出力先のディレクトリと言うことか?
ともかくこれで、/var/qmail/bin/qmail-smtpd-auth が生成されている。
オリジナルの qmail-smtpd をリネームしてバックアップし、新しく生成した smtp認証対応の qmail-smtpd-auth を qmail-smtpd にリネームする。

# cd /var/qmail/bin
# mv qmail-smtpd qmail-smtpd.org
# cp qmail-smtpd-auth qmail-smtpd


ここまでで、プログラムの準備は終わり。次は定義体の変更を行う。

更に、定義を少々変更する。

# cp /var/qmail/control/rcpthosts /var/qmail/control/rcpthosts.non-auth

として、/var/qmail/control/rcpthosts の中身は空っぽ。

次のように、/home/vpopmail/etc/smtp-auth ファイルを生成する。

# pwd
/home/vpopmail/etc
# ll
合計 20
-rw-r--r-- 1 vpopmail vchkpw 25 5月 27 2007 inc_deps
-rw-r--r-- 1 vpopmail vchkpw 32 5月 27 2007 lib_deps
-rw-r--r-- 1 vpopmail vchkpw 0 3月 5 19:20 open-smtp
-rw-r--r-- 1 root root 0 3月 4 12:57 open-smtp.lock
-rw-r--r-- 1 root root 7 3月 5 19:26 smtp-auth
-rw-r--r-- 1 root root 59 5月 25 2007 tcp.smtp
-rw-r--r-- 1 root root 2261 5月 27 2007 tcp.smtp.cdb

中身は、次の1行だけとする。

:allow

保存したら、tcprules コマンドで smtp-auth.cdb に変換する。

# pwd
/home/vpopmail/etc
# /usr/local/bin/tcprules smtp-auth.cdb smtp-auth.tmp < smtp-auth
# ll
合計 24
-rw-r--r-- 1 vpopmail vchkpw 25 5月 27 2007 inc_deps
-rw-r--r-- 1 vpopmail vchkpw 32 5月 27 2007 lib_deps
-rw-r--r-- 1 vpopmail vchkpw 0 3月 5 19:50 open-smtp
-rw-r--r-- 1 root root 0 3月 4 12:57 open-smtp.lock
-rw-r--r-- 1 root root 7 3月 5 19:26 smtp-auth
-rw-r--r-- 1 root root 2072 3月 5 19:50 smtp-auth.cdb
-rw-r--r-- 1 root root 59 5月 25 2007 tcp.smtp
-rw-r--r-- 1 root root 2261 5月 27 2007 tcp.smtp.cdb
#

そして、これまで tcp.smtp を使用していた部分を smtp-auth に変更するために、qmail の起動ファイルを変更する。

# vi /etc/rc.d/init.d/qmail

-/etc/rc.d/init.d/qmail-
  :
#Vsmtp
/usr/local/bin/tcpserver -H -R -l mail.mirins.dyndns.biz -v -x /home/vpopmail/et
c/smtp-auth.cdb -u 312 -g 310 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail
/bin/splogger smtpd 3 &
  :

そして、デーモンを起動しなおせばOK。

# /sbin/service qmail stop
# /sbin/service qmail start


最終的に…
今回の修正は、パッチを当てた qmail バイナリさえ用意できれば、次の設定を行うだけで済んだ事になる。

# cat /var/qmail/control/rcpthosts
mail.mirins.dyndns.biz
mirins.dyndns.biz

# cat /home/vpopmail/etc/smtp-auth
:allow

# vi /etc/rc.d/init.d/qmail
    :
  #Vsmtp
  /usr/local/bin/tcpserver -H -R -l mail.mirins.dyndns.biz -v -x /home/vpopmail/
  etc/smtp-auth.cdb -u 312 -g 310 0 smtp /var/qmail/bin/qmail-smtpd /home/
  vpopmail/bin/vchkpw /bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &
    :

特に、qmailの起動パラメータは、ややこしいけど、「vpopmail/bin/vchkpw /bin/true」を追加しただけである。
[ 2008/03/15 13:50 ] Linux環境 | TB(0) | CM(0)

今更ながらの、qmail インストール・設定 (その3) 

前回までに、qmail の導入が終わり、メールの送受信が出来るようになった。
…出来るようになったと思っていた。orz

ところが、実際のところは上手く動いていない。具体的な症状は次のようになる。

今回の仕組み間を構築するに当たり、インフラとしてのネットワーク網を2種類使用している。
ひとつは、ぷららネットワークスの「plala」と、もうひとつは、ソニーエンタテイメントの「So-net」である。

このうち、「ぷらら」を qmail のドメイン ddnsname.dyndns.biz として使用している。このことを踏まえて、

(1) ddnsname.dyndns.biz 自分自身へのメールの送信は正常に行える。
(2) xxxxxx@beige.plala.or.jp へのメール送信も正常に行える。
(3) yyyyyy@bj9.so-net.ne.jp へのメール送信が行えない。

ログを見てみると、このようなエラーが出ている。

Jun 5 15:15:41 mirins qmail: 1181024141.331152 starting delivery 15: msg 54283 to remote xxxxxxx@bj9.so-net.ne.jp
Jun 5 15:15:41 mirins qmail: 1181024141.331318 status: local 0/10 remote 1/20
Jun 5 15:15:41 mirins qmail: 1181024141.395173 delivery 15: deferral: Sorry,_I_wasn't_able_to_establish_an_SMTP_connection._(#4.4.1)/
Jun 5 15:15:41 mirins qmail: 1181024141.395338 status: local 0/10 remote 0/20


(4) 受信はすべてのパターンで正常に行えている。

ここで、問題になるのは、(3) の場合である。これは、つまり、「網」の中のメール転送は正常に行えているが、「網」の外にメールデータが出て行かないこと意味する。

考えてみれば、ぷららでは、「Outbound Port 25 Block」が導入されているので、「ぷらら網」から外に出るときには、25番ポートがブロックされている。
この場合に、メールを送信したければ、ぷららのメールサーバを使用する必要がある。


この問題の原因を知るために、メール送信の仕組み考えた見た。

今回、メールクライアントは、So-net網を利用して、インターネットに接続を行っている。また、qmail が設置されているサーバは、plala網にある。

この環境で、メールを So-netユーザに送る場合は、次の様になる。

 「Becky! InternetMail (送信フォルダ)」
      ↓
    (OB 587)
      |
      ↓    So-net網
      +−−−−−−−−−−
      |    plala網
      ↓
    (OB 587)
      ↓
   「自作サーバ」 iptable ポート変換
      ↓
    (SMTP 25)
      ↓
 「ddnsname MTA (自作サーバの MTA)」
      ↓
    (SMTP 25)
      |
      ↓    plala網
      +−−−−−−−−−−[1]
      |    So-net網
      ↓
    (SMTP 25)
      ↓
 「So-net MTA (プロバイダの MailBox)」
      ↓
    (POP3 110)
      ↓
 「Becky! InternetMail (受信フォルダ)」 プロバイダ ユーザ


ここで、問題になるのは、[1]の部分。

plala網と So-netのMTAの関係は、plala網の中から、メールクライアントを利用して、So-netのメールサーバに接続する方式と全く同一になる。
つまり、ddnsname MTA はメールクライアントと同じ位置付けというわけだ。

この仕組みの中では、「Outbound Port 25 Block」にブロックされても当然である。

上記のメッセージのように、qmail 本体が、

 「Sorry,_I_wasn't_able_to_establish_an_SMTP_connection.」
 「私はSMTP接続を確立することができませんでした。」

と、言っているわけである。


ならば、と言う事で、いろいろ考えてみた。

 1.qmail サーバー間転送を 587番ポートにしてみる。
   →これは、世の中一般の MTA が対応していないとダメ。
    何より、qmail のリコンパイルが必要になるようで却下。

 2.メールクライアントの SMTP サーバを、外部の MTAに指定する。
   →これは、自作で SMTPサーバを立てていることにならない。

 3.iptable を利用して、25番ポートを 587ポートに変換する。
   →お手軽ではあるが、結果は1.と同じ。

最終的に行き着いたのが、

 4.プロバイダが用意した、リレー用 MTA を経由して、SMTP転送する。

この方法であれば、スマートに実現できそうである。

具体的には、qmail の設定ファイルを追加する。
(もともとは存在しないようなので、新規作成になる。)

  # vi /var/qmail/control/smtproutes

   :mmr.plala.or.jp

と、1行のみ。

コロンの左側に、処理対象となる メール宛先のドメイン名。右側に、転送する先の MTAサーバ名を指定する。
plalaの場合は、mmr.plala.or.jp なので、そのまま指定。更に、すべてのメールは、このリレーサーバを通すため、メールの宛先指定はブランクにする。

これで、動作確認したところ、バッチリ送信が可能になった。

うん、送信・受信ともに順調。^^)



…あれ?
どんなタイミングでも送信出来てしまう。
「POP before SMTP機能」が効いていないんじゃないのか?

というわけで、非常に危険な MTA となっているため、またしばらく封印。
[ 2007/06/07 23:32 ] Linux環境 | TB(0) | CM(0)

今更ながらの、qmail インストール・設定 (その2) 

前回の記録では、qmail を導入したところまでだっだので、その続きで、稼動確認の部分を記述しようと思う。

qmail の導入が正しく行われているとすれば、確認するのは、「メールの送信」「メールの受信」のそれぞれの場合である。

---------------------------------------------------------
(1) メール送信確認。

これは、セッティングしたメールサーバを利用して、他のプロバイダにメールを送信できるかどうかを確認する。

データの流れは、

 「Becky! InternetMail (送信フォルダ)」 ddnsname ユーザ
      ↓
    (OB 587)
      ↓
 「ddnsname MTA (自作サーバの MTA)」
      ↓
    (SMTP 25)
      ↓
 「So-net MTA (プロバイダの MailBox)」
      ↓
    (POP3 110)
      ↓
 「Becky! InternetMail (受信フォルダ)」 プロバイダ ユーザ

ここで、重要なのは、メールクライアントの送信は ポート 587 を使用するということ。現在は、ほとんどのプロバイダで、「Outbound Port25 Blocking」の処置が取られているため、事実上、このポートは使用できないことになる。

そこで、代わりに ポート 587 を MTAで使用しましょう。ということらしいのだが、qmail は ポート 25 で口を開けて待っているので、接続は出来ない。

インターネットに繋がっているパソコンの DOSプロンプトから、telnet を使って接続しようとすると、次のようになる。

  > telnet mail.ddnsname.dyndns.biz 25
  接続中: mail.ddnsname.dyndns.biz...ホストへ接続できませんでした。
  ポート番号 25: 接続に失敗しました

ならば、ポート 587 を ポート 25 に変換してしまえばよい。という発想は、実に自然なわけである。
もう少し、高級なルータを使用していれば、ポート番号を変換しつつ、フォーワード出来るが、BP-BBRM では宛先の IPアドレスを指定する事が精一杯。

そこで、linux の iptables の登場。今回のサーバには、なぜか既に導入済みで、しかも何も設定されていない。(ナゼ?)

  # /sbin/iptables -t nat -n -L
  Chain PREROUTING (policy ACCEPT)
  target prot opt source destination

  Chain POSTROUTING (policy ACCEPT)
  target prot opt source destination

  Chain OUTPUT (policy ACCEPT)
  target prot opt source destination

ポート 587 を ポート 25 に転送するルールを設定する。

  # /sbin/iptables -t nat -A PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 25

ちなみに、解除するには、次のようにする。

  # /sbin/iptables -t nat -D PREROUTING -p tcp --dport 587 -j REDIRECT --to-ports 25


このままでは、マシンを再起動すると、設定が消えしまうので、 /etc/rc.d/rc.local にこの行を加えて、上記のコマンドを自動実行するように設定する。


---------------------------------------------------------
(2) メール受信確認。

こちらは、さっきとは逆のパターンである。他のプロバイダから送られてきたメールを参照できるかどうか確認する。

データの流れは次の通り。

 「Becky! InternetMail (送信フォルダ)」 プロバイダ ユーザ
      ↓
    (OB 587 or 25) ・・・ プロバイダによる
      ↓
 「So-net MTA (プロバイダの MTA)」
      ↓
    (SMTP 25) ・・・ [1]
      ↓
 「ddnsname MTA (自作サーバの Maildir)」
      ↓
    (POP3 110)
      ↓
 「Becky! InternetMail (受信フォルダ)」 ddnsname ユーザ


最初、この動作は上手くいかなかった。メールクライアントから出て行くのだが、自作サーバに届かない。ちょうど、[1]の部分で通信が出来ていないようである。

と、気が付いた。ルータの仮想サーバで、ポート 25 を開けていなかったの、だ。^^)
これを開けることで、問題なく通信が出来るようになった。v(^_^)

---------------------------------------------------------
(3) クライアントの設定は次のようになる。

設定の肝は、vpopmail を使用していると、ユーザーID は メールアドレスそのものと同じで良いらしい。また、サーバのポート番号は、SMTP 587 を設定する。

図1.qmail メールクライアント設定 20070527  
図2.qmail メールクライアント設定 20070527

[ 2007/05/27 20:20 ] Linux環境 | TB(0) | CM(0)

今更ながらの、qmail インストール・設定 

●導入サーバ
 Red Hat Linux 7.3 2.96-110

 Intel Celeron (Mendocino) stepping 05
 Memory: 524288k


●ネットワークの基本設定

 ローカルIP
  192.168.0.190

 ダイナミックDNS設定
  ddnsname.dyndns.biz

  「Enable Wildcard」にチェックを入れる。
  これによって、mail.ddnsname.dyndns.biz がサブドメインとして扱える。

  「Mail Exchanger」には、ddnsname.dyndns.biz を設定。
  本来、Mail Exchanger は、別のサーバのドメインを設定するらしいが、
  ここを設定しないと、MX レコードを引けなかったので、とりあえず、
  同じものを指定。

  「Backup MX?」には、チェックを入れない。
  ここにチェックを入れると、ドメイン検索の順番が変わるらしい。


 ブロードバンドルータはアイオーデータの「NP-BBRM」を使用。
 仮想サーバ機能を使用して、特定のポートをフォワードする。

  WAN ポート 110 (TCP/UDP) -> 192.168.0.190
  WAN ポート 25 (TCP/UDP) -> 192.168.0.190
  WAN ポート 587 (TCP/UDP) -> 192.168.0.190

  ここで、587番ポートをフォワードするのがミソ。

●qmail の導入

 qmail-1.03.tar.gz を使用。

 導入に関しては、いろいろなホームページに記載があるが、フツーに行う。

 まずは、qmail用のディレクトリと、ユーザー/グループを作成

  # mkdir /var/qmail
  # groupadd -g 310 nofiles

  # useradd -g nofiles -u 311 -s /bin/false -d /var/qmail/alias alias
  # useradd -g nofiles -u 312 -s /bin/false -d /var/qmail qmaild
  # useradd -g nofiles -u 313 -s /bin/false -d /var/qmail qmaill
  # useradd -g nofiles -u 314 -s /bin/false -d /var/qmail qmailp

  # groupadd -g 320 qmail
  # useradd -g qmail -u 321 -s /bin/false -d /var/qmail qmailq
  # useradd -g qmail -u 322 -s /bin/false -d /var/qmail qmailr
  # useradd -g qmail -u 323 -s /bin/false -d /var/qmail qmails

 次に、ソースを解凍して、パッチを当てる。

  # tar xvfz qmail-1.03.tar.gz
  # cd qmail-1.03/
  # patch -p1 < ../qmail-date-localtime.patch

 ※メールヘッダに記載される日付・時間情報を日本標準時間に合わせるパッチ。

 パッチが当たったら、インストール。

  # make setup check
  # ./config-fast mail.ddnsname.dyndns.biz

 次のメッセージが表示されて、インストールは完了

  Your fully qualified host name is mail.ddnsname.dyndns.biz
  Putting mail.ddnsname.dyndns.biz into control/me...
  Putting ddnsname.dyndns.biz into control/defaultdomain...
  Putting ddnsname.dyndns.biz into control/plusdomain...
  Putting mail.ddnsname.dyndns.biz into control/locals...
  Putting mail.ddnsname.dyndns.biz into control/rctphosts...
  Now qmail will refuse to accept SMTP message expect to mail.ddnsname.dyndns.biz.
  Make sure to change rctphosts if you add hosts to locals or virtual damains!

 次の項目は、いらないと思われる。が、念のために設定。

 これは、メール転送の記述。
 postmaster、MAILER-DAEMON、rootあてのメールは/var/qmail/alias に保存される。

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

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

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

     ---いらないと思われるのはここまで。


 qmailの起動スクリプトをコピー・修正。

  # cp /var/qmail/boot/home /var/qmail/rc

    #!/bin/sh

    # Using splogger to send the log through syslog.
    # Using qmail-local to deliver messages to ~/Mailbox by default.

    exec env - PATH="/var/qmail/bin:$PATH" \
    #qmail-start ./Mailbox splogger qmail <- この行を
    qmail-start ./Maildir/ splogger qmail <- このように編集


●cgi等から sendmail 互換で qmail を呼び出す設定。

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

  sendmail 互換プログラムに、単なるリンクを張るだけですね。

●vpopmail の導入 (本命)

 まず、vpopmail 用のユーザーとグロープを作成。
 グループの 89/vchkpw というのは慣例らしいです。

  # groupadd -g 89 vchkpw
  # useradd -g vchkpw -u 89 vpopmail

 次に、解凍導入を行います。

  # tar xvfz vpopmail-5.2.1.tar.gz
  # cd vpopmail-5.2.1

  # ./configure --enable-roaming-users=y
  # make
  # make install-strip

   ※--enable-roaming-users=y は 「POP before SMTP機能」を使用する設定

 なんでも、POP認証した後で、この認証情報は自動で削除されないらしい。
 そこで、定期的にコマンドを呼び出して、情報を削除する。

  # crontab -e

    0,10,20,30,40,50 * * * * /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null


 vpopmail でのバーチャルドメインの設定を行う。

  # cd /home/vpopmail/bin
  # ./vadddomain ddnsname.dyndns.biz

   この後、パスワードを2回聞いてくる。これが、qmailadmin のパスワードになる。
   とりあえず、password と入力する。


 これにより、次のファイルが作成される。
 それぞれの中には、ドメイン名等が入っている。

  /var/qmail/control/locals
  /var/qmail/control/rcpthosts
  /var/qmail/control/virtualdomains
  /var/qmail/users/assign
  /var/qmail/users/cdb

 初回は作成、2回目以降の実行では、情報の追加になる。
 (2回実行したら、ダブった。)

 更に、次のディレクトリが作成される。

  /home/vpopmail/domains/ddnsname.dyndns.biz
  /home/vpopmail/domains/ddnsname.dyndns.biz/postmaster/Maildir
  /home/vpopmail/domains/ddnsname.dyndns.biz/vpasswd
  /home/vpopmail/domains/ddnsname.dyndns.biz/vpasswd.cdb

 vpopmailの場合は、ddnsname.dyndns.bizの中ですべてのメールがやり取りされる。
 したがって、linuxユーザのホームディレクトリにある Maildir ディレクトリは
 必要ない・・・ようだ。

 まあ、vpopmail の機能として、linuxユーザと、メールアカウントの切り離し
 が売り文句のひとつであるから、当然といえば当然。

 qmailデーモンの uid と gid を取得しておく。

  # id qmaild
   uid=312(qmaild) gid=310(nofiles) groups=310(nofiles)

 そして、最後に qmail の起動スクリプトを設定する。

  # vi /etc/rc.d/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 &'

#Vsmtp
/usr/local/bin/tcpserver -H -R -l mail.ddnsname.dyndns.biz -v -x /home/vpopmail/et
c/tcp.smtp.cdb -u 312 -g 310 0 smtp /var/qmail/bin/qmail-smtpd 2>&1 | /var/qmail
/bin/splogger smtpd 3 &

#Vpop
/usr/local/bin/tcpserver -H -R -l mail.ddnsname.dyndns.biz -v 0 pop3 /var/qmail/bi
n/qmail-popup mail.ddnsname.dyndns.biz /home/vpopmail/bin/vchkpw /var/qmail/bin/qm
ail-pop3d Maildir 2>&1 | /var/qmail/bin/splogger pop3d 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

---- ここまで ----------------------------------------------

 OSの起動時に、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

● qmailadmin の導入

 まず、autoresponder を事前に導入。qmailadmin に必要らしい。

  # tar xvfz autorespond-2.0.2.tar.gz
  # cd autorespond-2.0.2/
  # make
  # make install

 そして、qmailadmin を導入。
 このマシンは、apache を自分でインストールしたので、それぞれのフォルダは、
 該当する apache の位置になっている。

  # tar xvfz qmailadmin-1.0.6.tar.gz
  # cd qmailadmin-1.0.6

  # ./configure --enable-htmldir=/usr/local/apache2/htdocs/ --enable-cgibindir=/usr/local/apache2/cgi-bin/
  # make
  # make install-strip

●起動方法

 qmail は次のように停止・起動する

  # /etc/rc.d/init.d/qmail start
  # /etc/rc.d/init.d/qmail stop

 また、qmailadmin はブラウザから、次の URLで起動する

  http://ddnsname.dyndns.biz/cgi-bin/qmailadmin

 このとき、
   ユーザー名は postmaster
   ドメイン名は ddnsname.dyndns.biz
   パスワードは password

 これで、中に入れる。

●雑感

全体を通して感じたことは、qmail 自体はシンプルなプログラムの集合体であるということ。
更に、sendmail の Mailbox 形式を引き継げることや、vpopmail では、linuxのユーザーとは別に、メールユーザを管理できることから、設定最中は、何が正しいのか良くわからないため、非常に手間取った。

正確ではないかもしれないが、vpopmail を使用する場合は、home ディレクトリの Maildir は必要ない。また、/var/qmail/alias/Maildir も必要ないと思われる。
メールデータの転送は、/home/vpopmail/domains/ddnsname.dyndns.biz/ の中で完結している。
当然、qmailadmin のユーザー管理もこのフォルダの中で完結している。

[ 2007/05/27 18:42 ] Linux環境 | TB(0) | CM(0)
プロフィール

あきら

Author:あきら
パソコン暦20年のオヤジ。パソコン一筋だったけど、最近はデジイチにハマって、毎週のように出かけてる♪
日々の出来事、作品は mixi だけど、パソコン、PDA、携帯の技術情報は blogで記録することに。

ブロとも申請フォーム