YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-04-17 (水)


[一語一絵/IT系]

続:Fedora Core 2 〜 qmail の導入 / 2004-10-29 (金)

portageで段階的にステップアップしてきた最終形 qmail-vida を導入する。

まずはdjb基本セットの daemontoolstcpserver からだ。いつものようにmakeすると「undefined reference to `errno'」というエラーが発生する場合がある…ていうか[External]Fedora Coreでは出る。調べたところglibcのアップグレードに伴う弊害だそうだ。

だが途方に暮れる事はない。error.hの

extern int errno;
という1行を
#include <errno.h>
に置き換えれば良い。editorさえ使えればたやすい事だ。

daemontoolstcpserver のインストールまで終わったら、qmail のビルドだが、その前にqmailプロセス用のアカウントを追加しておく必要がある。が、さらに言うなら

# setenforce 0
でenforcing設定をpermissiveモードに切り替えてからやった方が良い。
# mkdir /var/qmail
# /usr/sbin/groupadd nofiles
# /usr/sbin/useradd -g nofiles -d /var/qmail/alias -s /bin/false 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
# /usr/sbin/groupadd vida
# /usr/sbin/useradd -g vida -d /var/qmail -s /bin/false qmailu
# /usr/sbin/useradd -g vida -d /var/qmail -s /bin/false authdb
# /usr/sbin/useradd -g members -d /home/pop/ -s /bin/bash pop

続いて qmailqmail-vida のビルドとインストール。 今回はqmailパッケージとcheckpasswordパッケージへのパッチは以前に適用済みのものをportageからコピーしたので省略。オリジナルアーカイブから展開する場合はパッチを忘れずに。詳細は添付文書(doc/install.html)参照の事。

# cd qmail-1.03 ; make setup check
# cd ../qmail-vida-0.51/src/vida ; make setup check
# cd ../.. ; make install-doc

続いて実行環境の作成だが、SSLWrapを入れてなかったり環境が中途半端なので詳細は省略する。currentログで起動状態が確認できればOK。

# tai64nlocal < /var/log/qmail/current
2004-10-28 23:45:29.994960500 status: local 0/10 remote 0/20
# tai64nlocal < /var/log/qmail-smtpd/current
2004-10-28 23:45:27.942556500 tcpserver: status: 0/40
# tai64nlocal < /var/log/qmail-pop3d/current
2004-10-28 23:45:27.936246500 tcpserver: status: 0/40

続いてSELinuxならではのセキュリティポリシーの追加。audit2allow の出力から init_t の行を抽出して init.te を作成する。useradd/groupaddは日常的に行う処理ではないのでセキュリティポリシーの追加はしない。インストール作業の時はpermissiveモードにした方がいい。

# cd /etc/security/selinux/src/policy
# audit2allow -d -l
    :
allow init_t root_t:lnk_file { read };
allow init_t usr_t:file { execute execute_no_trans getattr ioctl read };
allow init_t usr_t:lnk_file { read };
    :
# cat > domains/init.te
allow init_t root_t:lnk_file { read };
allow init_t usr_t:file { execute execute_no_trans getattr ioctl read };
allow init_t usr_t:lnk_file { read };
# make reload
この後 enforcing モードにして、サービスがエラーを吐かなければOKだと思う。念の為、rebootしてもう一度確認。

完全に忘れていた個人別設定。

$ /var/qmail/bin/maildirmake ~/Maildir
$ echo ./Maildir/ > ~/.qmail
$ /var/qmail/bin/vida-passwd -a
Changing password for user yano
New password:********
Retype new password:********
vida-passwd: Password for user yano was changed
pwdbmake: authdb/pwdusers/cdb was updated

ローカル送信テスト。

$ /var/qmail/bin/qmail-inject yano
To: yano
From: local
Subject: localtest

This mail is test message.

$
qmailのログチェック。
$ tai64nlocal < /var/log/qmail/current
2004-10-29 00:09:48.170573500 new msg 850958
2004-10-29 00:09:48.170587500 info msg 850958: bytes 339 from <yano@fedora.bravotouring.com> qp 10049 uid 500
2004-10-29 00:09:48.189297500 starting delivery 1: msg 850958 to local yano@fedora.bravotouring.com
2004-10-29 00:09:48.192203500 status: local 1/10 remote 0/20
2004-10-29 00:09:48.239555500 delivery 1: success: did_1+0+0/
2004-10-29 00:09:48.241556500 status: local 0/10 remote 0/20
2004-10-29 00:09:48.241572500 end msg 850958
いけた!?
$ ll ~/Maildir/new
合計 24
drwx------  2 yano members 4096 10月 29 00:09 ./
drwx------  5 yano members 4096 10月 28 23:58 ../
-rw-------  1 yano members  426 10月 29 00:09 1098976188.10052.fedora.bravotouring.com
$ cat new/1098976188.10052.fedora.bravotouring.com
Return-Path: <yano@fedora.bravotouring.com>
Delivered-To: yano@fedora.bravotouring.com
Received: (qmail 10049 invoked by uid 500); 29 Oct 2004 00:09:45 +0900
Date: 29 Oct 2004 00:09:41 +0900
Message-ID: <20041028150941.10048.qmail@fedora.bravotouring.com>
To: yano@fedora.bravotouring.com
From: local@fedora.bravotouring.com
Subject: localtest

This mail is test message.

$
これで配送までOK。

外部送信では表書き送信者アドレス(envelope sender address)にDNS未登録のホスト名が入ると接続拒否されるので、 qmail-inject のオプションでアドレスを指定するとうまくいく。

# /var/qmail/bin/qmail-inject -flocal@bravotouring.com yano@nifty.com
To:yano@nifty.com
From:local@bravotouring.com
Subject: outbound test

This mail is outbound test message.

#

単体での送受信が出来たら、続いてクライアントからの送受信だが、その前にいわゆるファイヤウォール iptables の設定を追加する。端末の場合は/usr/bin/system-config-securitylevelの「カスタマイズ」画面、GUIだと「システム設定」の「セキュリティレベルの設定」を開く。

smtpは既定で空いていたので、「その他のポート」にpop3:tcpを追加すれば良い。結果は /etc/sysconfig/iptables に保存される。

パソコンからも送受信を確認できたらOKだ。

【参照】
●qmail-vida http://qmail-vida.sourceforge.jp/
●MM総合研究所 http://www.mm-labo.com/
qmailがインストールできない