qmail
qmailの設定に関すること。
Debianでqmailの設定
apt-get remove --purge exim4 exim4-base exim4-config
apt-get install ucspi-tcp-src
build-ucspi-tcp
apt-get install qmail-src
cd /usr/local/src
wget http://jaist.dl.sourceforge.net/sourceforge/vpopmail/vpopmail-5.4.27.tar.gz
-> 27はmakeファイルがおかしい。下記エラーがでます。
gcc -g -O2 -Wall -o vchkpw vchkpw.o md5.o hmac_md5.o libvpopmail.a -lcrypt
libvpopmail.a(libvpopmail_a-vpopmail.o): In function `vdeluser':
/root/vpopmail-5.4.27/vpopmail.c:1769: undefined reference to `backfill'
libvpopmail.a(libvpopmail_a-vpopmail.o): In function `make_user_dir':
/root/vpopmail-5.4.27/vpopmail.c:2371: undefined reference to `backfill'
collect2: ld はステータス 1 で終了しました
make[2]: *** [vchkpw] エラー 1
make[2]: ディレクトリ `/root/vpopmail-5.4.27' から出ます
make[1]: *** [all-recursive] エラー 1
make[1]: ディレクトリ `/root/vpopmail-5.4.27' から出ます
make: *** [all] エラー 2
tar xvzf vpopmail-5.4.27.tar.gz
groupadd -g 90 vchkpw
mkdir /home/vpopmail/
mkdir /home/vpopmail/etc
useradd -g vchkpw -d /home/vpopmail -u 90 -s /bin/false vpopmail
cd /home/vpopmail/etc
vi vpopmail.mysql
localhost|0|vpopmailuser|vpopmailpassword|vpopmaildb
mysql -u root -p
CREATE DATABASE vpopmaildb;
GRANT select,insert,update,delete,create,drop ON vpopmaildb.*
TO vpopmailuser@localhost IDENTIFIED BY 'vpopmailpassword';
quit
apt-get install libmysqlclient15-dev
./configure \
--enable-roaming-users \ # pop-before-smtpを許可
--enable-relay-clear-minutes=30 \ # pop認証結果を30分保存する(デフォルト180)
--enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp \
--enable-logging=p \ # popエラーをsyslog(/var/log/maillog)に
--disable-ip-alias-domains \ # IPエイリアスドメインをサポートしない
--disable-passwd \ # /etc/passwdユーザーを使わない
--enable-clear-passwd \ # 管理人がvuserinfoなどを使って平文のパスワードを読める
(以下はmysqlを使うときのみ指定)
--enable-auth-module=mysql \ # ドメイン、アカウント管理はcdbでなくmysqlを使う
--enable-incdir=/usr/include/mysql \ # MySQLインストール時のものを
--enable-libdir=/usr/lib/mysql \ # 同上
--enable-many-domains \ # ドメイン毎にテーブルを作らない
--enable-auth-logging \ # 最後のpop認証データをmysqlに保存する
--enable-sql-logging \ # pop認証エラーをmysqlのvlogテーブルに保存する
--disable-valias \ # MySqlにvalias処理用データを格納しない
--disable-mysql-limits # MySQLでなく.qmailadmin-limitsファイルを使う
./configure --enable-roaming-users --enable-relay-clear-minutes=10 --enable-tcpserver-file=/home/vpopmail/etc/tcp.smtp
--enable-logging=p --disable-ip-alias-domains --disable-passwd --enable-clear-passwd --enable-auth-module=mysql
--enable--sqlincdir=/usr/include/mysql --enable-libdir=/var/lib/mysql --enable-many-domains --enable-auth-logging
--enable-sql-logging --disable-valias --disable-mysql-limits
vpopmail 5.4.27
Current settings
---------------------------------------
vpopmail directory = /home/vpopmail
domains directory = /home/vpopmail/domains
uid = 90
gid = 90
roaming users = ON --enable-roaming-users
tcpserver file = /home/vpopmail/etc/tcp.smtp
open_smtp file = /home/vpopmail/etc/open-smtp
rebuild tcpserver file = ON --enable-rebuild-tcpserver-file (default)
password learning = OFF --disable-learn-passwords (default)
md5 passwords = ON --enable-md5-passwords (default)
file locking = ON --enable-file-locking (default)
vdelivermail fsync = OFF --disable-file-sync (default)
make seekable = ON --enable-make-seekable (default)
clear passwd = ON --enable-clear-passwd (default)
user dir hashing = ON --enable-users-big-dir (default)
address extensions = OFF --disable-qmail-ext (default)
ip alias = OFF --disable-ip-alias-domains (default)
onchange script = OFF --disable-onchange-script (default)
auth module = mysql --enable-auth-module=mysql
mysql replication = OFF --disable-mysql-replication (default)
sql logging = ON --enable-sql-logging
mysql limits = OFF --disable-mysql-limits (default)
SQL valias table = OFF --disable-valias (default)
auth inc = -I/usr/include/mysql
auth lib = -Xlinker -R -Xlinker /var/lib/mysql -L/var/lib/mysql -lmysqlclient -lz -lm
system passwords = OFF --disable-passwd (default)
pop syslog = show failed attempts with clear text password --enable-logging=p
auth logging = ON --enable-auth-logging (default)
all domains in one SQL table = --enable-many-domains (default)
spamassassin = OFF --disable-spamassassin (default)
maildrop = OFF --disable-maildrop (default)
vi /home/vpopmail/etc/tcp.smtp
127.:allow,RELAYCLIENT=""
192.168.:allow,RELAYCLIENT=""
#clearopensmtp
0-59/10 * * * * root /home/vpopmail/bin/clearopensmtp 2>&1 > /dev/null
cd /var/qmail/
vi ./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 ./Maildir splogger qmail
chmod 755 ./rc
vi /etc/rc.d/init.d/qmail
=================================================================
起動シェル
=================================================================
chmod 755 qmail
/etc/rc.d/init.d/qmail cdb <- 上記tcp.smtpをcdb化
chkconfig --add qmail
/home/vpopmail/bin/vadddomain ドメイン名
cd /usr/local/src
wget http://www.inter7.com/devel/ezmlm-0.53-idx-0.41.tar.gz
tar xvzf ezmlm-0.53-idx-0.41.tar.gz
make
make setup
wget http://jaist.dl.sourceforge.net/sourceforge/qmailadmin/qmailadmin-1.2.12.tar.gz
tar xvzf qmailadmin-1.2.12.tar.gz
cd qmailadmin-1.2.12
※autoresponderを入れていないので、--enable-autoresponder-path=nとする
./configure --enable-autoresponder-path=n --enable-htmldir=/var/www --enable-cgibindir=/usr/lib/cgi-bin/
make
qmailadmin 1.2.12
Current settings
---------------------------------------
cgi-bin dir = /usr/lib/cgi-bin/
html dir = /var/www
image dir = /var/www/images/qmailadmin
image URL = /images/qmailadmin
template dir = /usr/local/share/qmailadmin
qmail dir = /var/qmail
vpopmail dir = /home/vpopmail
autorespond dir = n
ezmlm dir = /usr/local/bin/ezmlm
ezmlm idx = yes
mysql for ezmlm = yes
help = no
modify quota = no
domain autofill = no
modify spam check = no
make install-strip
mailコマンドでテスト!
# apt-get install mailutils
qmailの削除 qmailのqueueを削除するには?
qmailをアンインストールする必要があり、普通にdpkgで削除しようとしたら固まって先に進みません。
いろいろ見ていたらキューに残っていると削除できないことが判明。
今回のように全削除なら、/var/qmail/queue の配下mess,info,remote,localディレクトリの下にある、数字ディレクトリの中の数字だけのファイルを全部削除すれば良いようです。
開放ポート
DNSやWEBサーバーの設定を確認する。
LSOF
このコマンドは「ファイルやデバイスなどを開いているユーザーを調べるコマンド」です。オプションでポートを利用しているプロセスを調べることが出来ます。
lsof -i:80
-i でポートを調べる。 :80でポート番号を指定。
Debian 3.1での結果
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME apache2 4187 www-data 4u IPv4 1300861 TCP *:www (LISTEN) apache2 21450 root 4u IPv4 1300861 TCP *:www (LISTEN) apache2 21531 www-data 4u IPv4 1300861 TCP *:www (LISTEN) apache2 21532 www-data 4u IPv4 1300861 TCP *:www (LISTEN) apache2 21533 www-data 4u IPv4 1300861 TCP *:www (LISTEN)
Apacheが待ち受けていることが分かる。
DNS
スペルミスで嫌な思いをする前に下記コマンドで確認!
nslookup
nslookup ドメイン名
Windowsからも同名のコマンドで確認可能。
OKの場合
>nslookup a-pock.co.jp Server: 127.0.0.1 Address: 127.0.0.1#53 Name: a-pock.co.jp Address: 122.249.88.122IPアドレスが返ってくる。
NGの場合
>nslookup apock.co.jp Server: 127.0.0.1 Address: 127.0.0.1#53 ** server can't find apock.co.jp: NXDOMAINこのようにIPアドレスが返ってこない。
dig
dig @a-pock.co.jp a-pock.co.jp
@が問合せするDNS。省略可能
OKの場合
; <<>> DiG 9.2.4 <<>> a-pock.co.jp ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13058 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 2 ;; QUESTION SECTION: ;a-pock.co.jp. IN A ;; ANSWER SECTION: a-pock.co.jp. 86400 IN A 122.249.88.122 ;; AUTHORITY SECTION: a-pock.co.jp. 86400 IN NS dns2.a-pock.co.jp. a-pock.co.jp. 86400 IN NS ns.a-pock.co.jp. a-pock.co.jp. 86400 IN NS ns2.a-pock.co.jp. a-pock.co.jp. 86400 IN NS dns1.a-pock.co.jp. ;; ADDITIONAL SECTION: ns.a-pock.co.jp. 86400 IN A 122.249.88.123 ns2.a-pock.co.jp. 86400 IN A 122.249.88.122 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat May 17 16:31:21 2008 ;; MSG SIZE rcvd: 151
NGの場合
; <<>> DiG 9.2.4 <<>> apock.co.jp ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 63389 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;apock.co.jp. IN A ;; AUTHORITY SECTION: jp. 649 IN SOA z.dns.jp. root.dns.jp. 1211008501 3600 900 604800 900 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat May 17 16:34:11 2008 ;; MSG SIZE rcvd: 76
dig @a-pock.co.jp a-pock.co.jp MX
一番後ろに「MX A NS」などを付けることで、該当するレコードを返してくれる。省略時はA
; <<>> DiG 9.2.4 <<>> a-pock.co.jp mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17927 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 2 ;; QUESTION SECTION: ;a-pock.co.jp. IN MX ;; ANSWER SECTION: a-pock.co.jp. 86400 IN MX 10 ns.a-pock.co.jp. ;; AUTHORITY SECTION: a-pock.co.jp. 86400 IN NS dns1.a-pock.co.jp. a-pock.co.jp. 86400 IN NS dns2.a-pock.co.jp. a-pock.co.jp. 86400 IN NS ns.a-pock.co.jp. a-pock.co.jp. 86400 IN NS ns2.a-pock.co.jp. ;; ADDITIONAL SECTION: ns.a-pock.co.jp. 86400 IN A 122.249.88.123 ns2.a-pock.co.jp. 86400 IN A 122.249.88.122 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat May 17 16:37:22 2008 ;; MSG SIZE rcvd: 151
※バグなどがありましたら、ダウンロードしたソースにあるメールアドレスまでご一報ください。
