Debian sarge で qmail + vpopmail + courier-imap な環境構築

Debian sarge を再インストールする機会があったのでログをとっておきました。 せっかく apt-get という便利なインターフェースがあるので、基本的にパッケージ のみを使ってなんとかする方法を試しています(ソースからのリビルド含む)。 こうやったら自分の環境では動いた、という記録ですので自己責任でお試しのこと。

Table of Contents

Debian インストール
ネットワーク設定
apt の設定
sources.lstの編集
Pin-Priority の設定
旧サーバからのデータ移行
apache2
suexec 関連
apache2 その他もろもろ
smtp-auth パッチ適用済み qmail のビルド
ucspi-tcp のビルドとインストール
daemontools インストール
qmail のビルド
/var/qmail/controls ファイルの編集
/etc/init.d/qmail の変更
ユーザ用 Maildir の作成(vpopmail使わない場合)
vpopmail
daemontools から起動する場合
各種チェック
過去データの移行
Courier-IMAP 関連
userdb を使う方法
vchkpw を使う方法
qmailadmin
vpopmail-pop over ssl
mysql
旧サーバからのデータ移行
php
日本語関連の設定
Sitebar
BIND
Proftpd
POPFile
POPFile を IMAP 対応に
CPANモジュール関連
APT によるインストール
CPAN 設定
インストール済みのモジュール一覧を表示する
音関係
lame encoder
Squirrelmail
その他設定
adduser の設定
時計を NTP で自動設定
rootkit 対策
Subversion / Trac
suExec なしの場合
suExec ありの場合
NDTPD の設定
iptables を設定
ログをとりたい場合
SKKの設定
句読点の変更
Cacti
qmail を Submission ポートで動かす
qmail のリビルド、ソース変更
起動スクリプトの変更
動作確認
メモ

Debian インストール

なんてことはなく CD-ROM からインストール。最近は便利になったのでここでつまづくこともないでしょう。ちなみに使ったのは 3.1r1a netinst 版。

参考 URL

Debian -- Debian “sarge” Installation Information
http://www.us.debian.org/releases/sarge/debian-installer/

ネットワーク設定

各設定ファイルの内容を以下に書いておく

# vi /etc/network/interfaces

primary network について以下のように設定

auto eth0
iface eth0 inet static
	address 192.168.0.10
	netmask 255.255.255.0
	network 192.168.0.0
	broadcast 192.168.0.255
	gateway 192.168.0.1

リゾルバを設定

# vi /etc/resolv.conf
	search avoidnotes.org
	nameserver 192.168.0.1

hostsの設定

# vi /etc/hosts
127.0.0.1       localhost
192.168.100.110 hostname.avoidnotes.org   hostname
192.168.100.110 avoidnotes.org

てな感じ。

apt の設定

sources.lstの編集

# vi /etc/apt/sources.lst

sarge の行に contrib, non-free 加える security の行に non-free 加える etch, sid の行加える

Pin-Priority の設定

# vi /etc/apt/preferences

以下の内容を記述

Package: *
Pin: release a=testing
Pin-Priority: 105
 
Package: *
Pin: release a=unstable
Pin-Priority: 90

testing から借りてきたものは update の対象になる unstable からのものはならない。

旧サーバからのデータ移行

ユーザーやグループの移行は各アプリケーションのセットアップ前にやっておいたほうが無難かな? rsync を使う場合、移行元 で以下のコマンドを実行

# rsync -arv -e ssh /home 移行先ホスト名:/home

移行するファイルには root 権限でないと読めないファイルが含まれているはずなので、移行先ホストで

# vi /etc/ssh/sshd_config

として、PermitRootLogon を yes にしておくか、shared key 方式を使うなりして、とにかく root 権限で通信できるようにしておかないとダメ。PermitRootLogon yes はセキュリティの関係でいやな感じだが一時的なので気にしないか、AllowUsers に "@192.168.100.10 みたいに書いてホスト制限するとかするとよい。ちなみにうちはインターネット側の接続を切って作業するという対応をしました。

/etc/passwd, /etc/group, /etc/shadow 等は不足分をエディタでコピー&ペーストというアナログな方法でよいが、apt-get でインストールする時に作成されるユーザーの場合 uid, gid が以前と違うものになる確率が非常に高いので、passwd, group, shadow 等から移行するのは一般ユーザーだけにしておいたほうが無難。たとえば vpopmamil なんかは既存の vpopmail ユーザーがいるとパッケージからインストールする時にuid/gid が違うと言ってエラーを吐く。

vpopmail は domains 以下だけをコピーしておけば十分だと思う (これは vpopmail導入後にやればよい)

apache2

apt-get でインストール

# apt-get build-dep apache2
# apt-get install apache2

suexec 関連

とりあえずモジュールが有効になってなかったので

# a2enmod suexec

する。これは

# ln -s /etc/apache2/mods-available/suexec.load /etc/apache2/mods-enabled/suexec.load

するのと同じこと、だと思う。 で、/etc/apache2/sites-enabled/hogehoge.com に

SuexecUserGroup username groupname

とかしておく

# vi /etc/apache2/apache2.conf

AddHandler で cgi が有効にされてないのでコメントアウトを外しておく
/home/*/public_html 関連のディレクティブのコメントをはずしてあげる。ExecCGI 付け加える。

sites-enabled/* ファイルをそれぞれ開いて

Userdir public_html
Userdir disabled root hoge foo (必要なだけ)

加える(バーチャルドメイン運用時のバッドノウハウ)。

Debian の suexec は suexec-docroot=/var/www としてコンパイルされているため、/home 以下にドキュメントルートを置きたい場合などに不都合が生じる。Apache2 の場合 suexec-userdir=public_html でコンパイルされているのでさほど不都合は生じないかもしれないけど。suEXEC-docroot を変えたい場合 suEXEC モジュールのみを作り変えるとよい。

# mkdir ~/apache2-common
# cd ~/apache2-common
# apt-get source apache2-common
# cd apache2-2.0.54/upstream/tarballs
# tar zxf httpd-2.0.54.tar.gz
# cd httpd-2.0.54

suexec のドキュメントを参考にしながらconfigureする.

# ./configure ¥
   --enable-suexec ¥
   --with-suexec-bin=/usr/lib/apache2/suexec2 ¥
   --with-suexec-caller=www-data  ¥
   --with-suexec-userdir=public_html ¥
   --with-suexec-docroot=/home ¥
   --with-suexec-uidmin=1000 ¥
   --with-suexec-gidmin=1000 ¥
   --with-suexec-logfile=/var/log/apache2/suexec.log

make してできた suexec をコピーすれば OK。不安なようなら元の suexec はバックアップしておくように。

# make suexec
# cp support/suexec /usr/lib/apache2/suexec2

あとは上記の設定をして apache を再起動

apache2 その他もろもろ

mod_rewrite を有効に

$ sudo a2enmod rewrite

Apache のOS表示・バージョン表示を隠す

# vi /etc/apache2/apache2.conf

以下を追加

ServerTokens ProductOnly
ServerSignature Off

smtp-auth パッチ適用済み qmail のビルド

ucspi-tcp のビルドとインストール

$ sudo apt-get install ucspi-tcp-src

fakeroot も入れろと言われるので入れる

$ build-ucspi-tcp
$ /tmp/ucspi-tcp にできたパッケージをインストール

daemontools インストール

smtp を daemontools 経由で起動する場合いれておく

# apt-get install daemontools-installer
# build-daemontools

qmail のビルド

$ sudo apt-get install qmail-src
$ build-qmail

/tmp/qmail に展開していいか?みたいなことを聞かれるので yes と答えておく Enter するとインストールの画面になったところでパッチをあてるために別ターミナルを起動。

以下別ターミナルで操作

qmail-smtpd-auth
http://members.elysium.pl/brush/qmail-smtpd-auth/

から ver0.31 をダウンロード

$ cd ~/
$ tar xzvf qmail-smtpd-auth-0.31.tar.gz

smtp-auth パッチと base64 関連のソースを qmail のビルド用ディレクトリにコピーして パッチを適用する。

$ cd /tmp/qmail/qmail-1.03
$ cp ~/qmail-smtpd-auth-0.31/* ./
$ patch -p0 < auth.path

Makefile と qmail-smtpd.c にうまくパッチがあたらない。 ちなみにこのまま無視して make すると base64encode.o が見つからないとかいうエラーが 出て途中で失敗する。

仕方がないのであとは手パッチ。 Makefile.rej と qmail-smtpd.c.rej を見て手動で直す。

$ vi Makefile

具体的には qmail-smtpd: ターゲットを以下のように変更

旧 Makefile

qmail-smtpd: \
load qmail-smtpd.o rcpthosts.o qregex.o commands.o timeoutread.o \
timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \
date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \
open.a sig.a case.a env.a stralloc.a alloc.a strerr.a substdio.a error.a str.a \
fs.a auto_qmail.o socket.lib
        ./load qmail-smtpd qregex.o rcpthosts.o commands.o timeoutread.o \
        timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \
        received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
        datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
        alloc.a strerr.a substdio.a error.a str.a fs.a auto_qmail.o  `cat \
        socket.lib`

新 Makefile

qmail-smtpd: \
load qmail-smtpd.o rcpthosts.o qregex.o commands.o timeoutread.o \
timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o received.o \
date822fmt.o now.o qmail.o cdb.a fd.a wait.a datetime.a getln.a \
open.a sig.a case.a env.a stralloc.a alloc.a strerr.a substdio.a error.a str.a \
fs.a auto_qmail.o base64.o socket.lib
        ./load qmail-smtpd qregex.o rcpthosts.o commands.o timeoutread.o \
        timeoutwrite.o ip.o ipme.o ipalloc.o control.o constmap.o \
        received.o date822fmt.o now.o qmail.o cdb.a fd.a wait.a \
        datetime.a getln.a open.a sig.a case.a env.a stralloc.a \
        alloc.a strerr.a substdio.a error.a str.a fs.a auto_qmail.o base64.o `cat \
        socket.lib`

変更箇所は各行に base64.o を加えてるだけ。

qmail-smtpd.cは

#include "wait.h"
#include "fd.h"

を #include "command.h" の後に、

#define AUTHCRAM

を #define MAXHOPS 100 の前に加えればよい(試す人は一応 qmail-smtpd.c.rej を見て内容を確認してね)。

パッチの適用が終わったら、元のターミナルに戻って Enter を押せばビルドが始まる。 ビルドが終わると qmail パッケージインストールするか?と聞かれるがこの時点ではインストールしない。

exim 関係削除

exim が qmail とバッティングするので qmail パッケージをインストールする前に削除しておく。

# apt-get remove at exim4 exim4-base ¥
  exim4-config exim4-daemon-light mailx mutt
  ※ echo "exim deinstall" |dpkg --set-selections でもよい

/tmp/qmail/qmailパッケージ Inst

入らなければ依存関係チェックして削除

/var/qmail/controls ファイルの編集

# echo avoidnotes.org > /var/qmail/control/me

少なくともこれだけは設定しないと起動しない。

# echo avoidnotes.org > defaultdomain
# echo hostname.avoidnotes.org > locals
# echo hostname.avoidnotes.org > plusdomain
# echo hostname.avoidnotes.org > rcpthosts

/etc/init.d/qmail の変更

alias_empty の行、procmail 関連を外し、Maildir を有効にする。 popを有効にする場合下のほうにあるqmail-pop3dの起動部分を有効にしておく。 また、Debian のスタートアップスクリプトの場合 qmail-smtpd が smtp-auth で認証 するようになっていないので書き換える。

smtp サービスの起動部分 を以下のように変更

 --- 前略
 # prevent denial-of-service attacks, with ulimit
  ulimit -v 16384
    sh -c "start-stop-daemon --start --quiet --user qmaild \
    --pidfile /var/run/tcpserver_smtpd.pid --make-pidfile \
    --exec /usr/bin/tcpserver -- -R -H \
    -u `id -u qmaild` -g `id -g nobody` -x /etc/tcp.smtp.cdb 0 smtp \
    $rblsmtpd /usr/sbin/qmail-smtpd /usr/sbin/vchkpw /bin/true 2>&1 \
    | $logger &"

/usr/sbin/vchkpw /bin/true の部分が追加したところ。 今回は vpopmail を使うので vchkpw を使っているが、バーチャルドメインを使わない場合、 上記 vchkpw 部分を cmd5checkpw (CRAM-MD5) とかに書き換えるとよい。vpopmail のインストールは後ろのほうを参照。

チェック項目: /usr/sbin/vchkpw の実行権限は root になっているか。 なってないと動きません。(Debian/sid から入れた場合はなってるはず)

vchkpw の権限を確認したら

$ sudo /etc/init.d/qmail restart

各種チェック

$ telnet localhost 25
EHLO localhost

とか打つと

250-avoidnotes.org
250-AUTH LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME

といったレスポンスが返ってくる。 250-AUTH が返ってきていれば SMTP-AUTH が有効になっていることが確認できる。

PLAIN 認証を確認

$ perl -MMIME::Base64 -e 'print encode_base64("Username\0Username\0Password");'

とかして出てきた結果をコピーしておく。

例:ユーザー名 test@avoidnotes.org / パスワード testpass
$ perl -MMIME::Base64 -e 'print encode_base64("test@avoidnotes.org\0test@avoidnotes.org\0testpass");' 
dGVzdC5vcmcAdGVzdC5vcmcAdGVzdHBhc3M=

このパスワードをコピーなりメモなりしておいて

$ telnet localhost 25

する

EHLO localhost
250-avoidnotes.org
250-AUTH LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
AUTH PLAIN dGVzdC5vcmcAdGVzdC5vcmcAdGVzdHBhc3M=
235 ok, go ahead (#2.0.0)

となれば認証成功。

ユーザ用 Maildir の作成(vpopmail使わない場合)

# su - usernanme
/var/qmail/bin/maildirmake /home/username/Maildir

※権限は各ユーザ権限なので su してから作成

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

※skelに作っておくとよい

参考 URL

Memo for Linux ( SMTP Auth )
http://www.eva.gr.jp/~help/linux/2004/20040418.html
qmail+vpopmailでSMTP AUTH実装 : マロンくん.NET
http://www.marronkun.net/linux/mail/qmail_000032.html

vpopmail

qmail でバーチャルドメインを実現可能にする。 パッケージは sid から借りてくることになる。

# apt-get build-dep vpopmail-bin

libglib1.2-dev がないと言われるので

# apt-get install libglib1.2-dev
# apt-get build-dep vpopmail-bin

automake とか色々アップデートされるはず

# apt-get install libvpopmail-dev
# apt-get install vpopmail-bin

daemontools から起動する場合

インストールは qmail のところ参照

# vi /var/lib/svscan/vpopmail/log/run

log 内に run がないのは既知のバグなので追加しておく http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=265993

# vi /var/lib/svscan/vpopmail/log/run

以下の内容を記入

#!/bin/sh
exec multilog t ./main

各種パーミッションを変更

# chmod 755 /var/lib/svscan/vpopmail/log/run

sticky bit 立てておく

# chmod +t /var/lib/svscan/vpopmail/

/service に登録して supervise されるようにしておく

# ln -s /var/lib/svscan/vpopmail /service/vpopmail

POP before SMTP のデータベースを更新するには clearopensmtp を使う。 Debian パッケージからインストールすると /etc/cron.d/vpopmail-bin に

10,25,40,55 * * * * root /usr/sbin/clearopensmtp

という記述があるので、これでよければ特に変更しなくてもいいのだけど、

*/10 * * * * /usr/sbin/clearopensmtp > /dev/null 2>&1

といった感じに変更しておいた。

各種チェック

SMTP リレーのチェック

localhost からやっても意味がないので外部ホストから試してみるとよい。

$ telnet smtp.hoge.org smtp
220 smtp.hoge.org ESMTP
EHLO localhost
250-smtp.hoge.org
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
MAIL FROM:test@hoge.org  <-- 差し出し人メールアドレス
250 ok
RCPT TO:xxx@xxx.ne.jp <--送信先メールアドレス、rcpthosts 以外のホスト名にすること
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
<--rcpthosts に含まれないからリレー不可というメッセージ
QUIT <-- QUITで終了します。
221 smtp.hoge.org
Connection closed by foreign host.

POPの確認

$ telnet www.hoge.org pop3
+OK <701.1058746882@smtp.hoge.org>
USER hoge@hoge.org <-- USER ユーザー名を入力
+OK
PASS hogehoge  <-- PASS ユーザーのパスワードを入力
+OK
QUIT <--QUITで終了します。
+OK
Connection closed by foreign host.

もう一回SMTPしてみる

$ telnet www.hoge.org smtp
220 smtp.hoge.org ESMTP
EHLO localhost
250-smtp.hoge.org
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
MAIL FROM:hoge@hoge.org
250 ok
RCPT TO:xxx@xxx.ne.jp
250 ok  <-- 今度はうまくいくはず
DATA    <-- 本文の開始を指示
354 go ahead
test    <-- 適当に本文を書く
.       <-- "."を入力しエンターで終了
250 ok 1058746983 qp 705
QUIT    <--QUITで終了
221 smtp.hoge.org
Connection closed by foreign host.

APOP を確認

$ telnet www.hoge.org pop3
+OK <701.1058746882@smtp.hoge.org>
APOP hoge@hoge.org 6b234393647eca74170f18780afc689d
+OK

パスワードはワンタイムパスワードなので別コンソールで

$ echo '<701.1058746882@smtp.hoge.org>hogehoge' | tr -d '¥n' | md5sum

として算出する

過去データの移行

移行するデータは以下

Courier-IMAP 関連

courier-imapには認証に userdb を使う方法と vchkpw を使う方法とがある。 前者は開発側おすすめの方法だが、vchkpw用パスワードファイルを変換する手間があり、頻繁なパスワード変更が予想される場合不便がある。vchkpwを使いたい場合後述のパッケージのリビルドを行なう方法を参照してください。

userdb を使う方法

# apt-get build-dep courier-imap
# apt-get install libldap2-dev

courier-imap の新バージョンでは authvchkpw(要するに vpopmail 使って認証する機能)が 無効になっている。このため,courier 用 userdb に変換してやる必要がある。手順は

# mkdir -p /etc/courier/userdb/
# vchkpw2userdb --todir=/etc/courier/userdb
# chmod 700 /etc/courier/userdb <-- これやっとかないと makeuserdb でエラーがでる
# makeuserdb

とする。あと、設定によるけど authdaemonrc を変えておく必要あり。 /etc/courier/imap 内の設定は

AUTHMODULES="authdaemon"

となっていると思うので変える必要はない。 今までは各設定ファイルにて認証モジュールを決めていたが、それを一手に引き受けるデーモンである authdaemon で行う。で、

# vi /etc/courier/authdaemonrc
authmodulelist="authuserdb authpam"

とかしておいて

# /etc/init.d/courier-authdaemon restart

する。

vchkpw を使う方法

qmailadmin などで頻繁に vpopmail 側の db が変わる場合やっぱり authvchkpw が 欲しい気がするので、ソースパッケージをダウンロードしてきて、debian/rules の

--without-authvchkpw
を
--with-authvchkpw 

に変更してリビルド、インストール

authmodulelist="authvchkpw authpam"

というのが無難かもしれない。パッケージ管理は面倒になるけど。 以下 Courier-IMAP をソースからビルドする手順 あと、http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1614&forum=10&7 によると courier-imapのconfigure前に

$ export CFLAGS="-DHAVE_OPEN_SMTP_RELAY" 

とかやんなきゃダメっぽいのでやっておく。

APT-Pinning で testing を apt-line に入れてる場合

# apt-get build-dep courier-imap

しても Dependency が解決されない。これは courier-imap のソースを sid から取ろうとするため。 インストールするのは sarge の courier でいいので一旦 apt-line から testing や unstable を外して apt-get update する。それからもう一度

# apt-get build-dep courier-imap

とすると courier をビルドするのに必要なパッケージがもろもろ入る。 ソースパッケージをビルドするのに必要なツールが入っていなければ

# apt-get install build-essential fakeroot devscripts

して一式入れてから

$ mkdir /tmp/courier
$ cd /tmp/courier <-- ここらへんはなんでもいいけどソース展開用フォルダを作ってそこに移動
$ apt-get source courier

として courier のソース一式をダウンロード。 これはユーザー権限でよい。で、

$ cd courier-0.47/
$ vi debian/rules
  --without-authvchkpw を --with-authvchkpw に変更
$ dpkg-buildpackage -us -c -b -rfakeroot
06-04-04訂正
$ dpkg-buildpackage -us -uc -b -rfakeroot ね

これで courier-0.47 以下に沢山 courier 関連の deb パッケージができるはず。 もしかしたら /var/lib/vpopmail/include/config.h がないとか怒られるかもしれないけど その場合は

# mv /var/lib/vpopmail/include /var/lib/vpopmail/include.old
# mv /var/lib/vpopmail/lib var/lib/vpopmail/lib.old

これらは削除でいいと思うが一応。

# ln -s /usr/include/vpopmail /var/lib/vpopmail/include
# ln -s /usr/lib/vpopmail /var/lib/vpopmail/lib

とかしておいたらうまくいくかも。
インストールは IMAP に必要な最低限のパッケージだけ入れるなら

#  dpkg -i courier-imap_3.0.8-4sarge4_i386.deb courier-authdaemon_0.47-4sarge4_i386.deb ¥
  courier-base_0.47-4sarge4_i386.deb

だけ入れればよい。
あとは上に書いてあるとおり

# vi /etc/courier/authdaemonrc
>	authmodulelist="authvchkpw authpam"

して、

# /etc/init.d/courier-authdaemon restart

すればよい

qmailadmin

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=299772 にもある通りソースからリビルドしないといくつか不具合が出る

postmaster ではなく Postmaster の Maildir を読みに行くので Postmaster/Maildir/......qw がないとか言われる。

# ln -s /var/lib/vpopmail/domains/hogehoge.com/postmaster ¥
/var/lib/vpopmail/domains/hogehoge.com/Postmaster

とかすればその場凌ぎにはなる。 致命的なのがユーザーでログインした時、パスワードの変更等をクリックしても真っ白な画面が出てくる だけで何も起きない点。これでもう対処法考えるの面倒になってリビルドした。

以下ソースからのリビルド手順

# apt-get build-dep qmailadmin

特に何もでてこなかった

# cd /tmp
# mkdir qmailadmin
# cd qmailadmin
# apt-get source -b qmailadmin
# dpkg -i qmailadmin_1.0.6-1_i386.deb <-- 再インストール

autorespond がないと怒られた。

# apt-get install autorespond

libc6 のバージョンが古いと言われる。これはさすがにアップデートしたくないので

$ mkdir ~/src/autorespond
$ cd ~/src/autorespond
$ apt-get source autorespond
$ cd autorespond-2.0.5
$ dpkg-buildpackage -us -uc -b -rfakeroot
$ cd ../; sudo dpkg -i autorespond_2.0.5-1_i386.deb

WEB からのアクセス等は特に問題なくなった。IMAPにもちゃんと反映されているようだ。

vpopmail-pop over ssl

# apt-get install stunnel

で stunnel を入れておく
http://www.stunnel.org/examples/tcpserver-vpopmail.html より

#!/bin/sh
 exec env - PATH="/var/qmail/bin:$PATH" /usr/local/bin/tcpserver -R -H -D -c
 100 -v -u vpopmail -g vchkpw 0 pop3s \
 /usr/local/sbin/stunnel -T pop3s -p /etc/stunnel.pem -l
 /home/qmail/bin/qmail-popup example.com /home/vpopmail/bin/vchkpw \
 /home/qmail/bin/qmail-pop3d Maildir 2>&1

これを参考に /var/lib/svscan/vpopmail-pop3s 以下を作成

# vi /var/lib/svscan/vpopmail-pop3s/run
 #!/bin/sh
SERVERTYPE=pop3s
ulimit -v 4096
exec \
/usr/bin/tcpserver -H -R -D -c 100 -v -u vpopmail -g vchkpw 0 ${SERVERTYPE} \
/usr/sbin/stunnel -T ${SERVERTYPE} -p /etc/ssl/certs/stunnel.pem -l \
/usr/sbin/qmail-popup `hostname`.`dnsdomainname` \
/usr/sbin/vchkpw /usr/sbin/qmail-pop3d Maildir

ログ用のスクリプトも作成

# mkdir /var/lib/svscan/vpopmail-pop3s/log
# vi /var/lib/svscan/vpopmail-pop3s/log/run
#!/bin/sh
exec multilog t ./main
# chmod 755 /var/lib/svscan/vpopmail-pop3s/log/run

stunnel.pem は http://www.stunnel.org/faq/certs.html あたりを参考に作る config は指定しなくてもよい

# openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/stunnel.pem ¥
 -keyout stunnel.pem
# ln -s /var/lib/svscan/vpopmail-pop3s /service/vpopmail-pop3s
# vi /etc/init.d/vpopmail

起動スクリプトもかえておく

# vi /etc/init.d/vpopmail
NAME=vpopmail

の後に

NAMESSL=vpopmail-pop3s

を追加して、start, stop 等のスクリプト内で

svc -u $NAME

としてdaemontools経由でvpopmailを呼んでいる箇所を 以下のように変更して vpopmail-pop3s も呼ぶようにしてやる

svc -u $NAME
svc -u $NAMESSL

設定が終わったら再起動しておく

# /etc/init.d/vpopmail restart

mysql

apt-get でインストールする。 root のパスワードを設定しておくことを忘れずに。

# apt-get install mysql-server mysql-client
# mysqladmin -u root password xxxxxx

旧サーバからのデータ移行

移行元のサーバーで

# mysqldump --opt -uroot -p -A > backup.dmp
# rsync -arv -e ssh backup.dmp hostname:/path/to/file

とかする。

■ --opt
--quick --add-drop-table --add-locks --extended-insert --lock-tables と同じ。MySQL サーバに読み込むための最速ダンプを提供する。

MySQL 4.1 リファレンスマニュアル 4.9.7 mysqldump(テーブル構造とデータのダンプ)
http://dev.mysql.com/doc/refman/4.1/ja/mysqldump.html

ということで移行時なんかは --opt をつけておけば新サーバー側に元からあるデータベースを drop してから移行元データを復元してくれる。そうでなければ大抵重複エラーがでで復元できないので注意。

移行先では

# mysql -uroot -p < backup.dmp

とするだけ

また、データの移行に伴い debian-sys-maint ユーザーのパスワードが変わってしまうので、移行元の /etc/mysql/debian.cnf 内の password を移行先の debian.cnf に反映させておく必要がある。これをやっておかないと /etc/init.d/mysql restart ができない。

あと、ユーザー情報は mysql を再起動させないと反映されないので注意。

php

$ sudo apt-get install libapache2-mod-php4

apt-get install php4 すると apache2 ではなく apache 関連のパッケージを 落とそうとするので libapache2-mod-php4 する。落ちてくるのは

が削除される。 ん?なんでpreforkが削除されるんだろう・・・

http://lists.debian.or.jp/debian-users/200506/msg00188.html

によるとモジュール版PHPはスレッドセーフでないので worker では動かないとのこと CGI版にするかなあ。要検討。とりあえずはモジュール版にする。 ついでに

$ sudo apt-get install php4-mysql

もしとく

日本語関連の設定

http://itbtech.itboost.co.jp/man/php_man/ref.mbstring.html を参考に /etc/php/apache2/php.ini を変更する EUC-JP の場合の設定でやったけど UTF-8 でもよかったかも

Sitebar

$ sudo apt-get install sitebar

過去のデータベースがある場合 Debconf でデータベースを作成するか聞かれるので Skip する データベースへの接続情報は /etc/sitebar/config.inc.php にあるので

移行元
# rsync -arv -e ssh /etc/sitebar/config.inc.php hostname:/etc/sitebar
> 
移行先
# ln -s /etc/sitebar/config.inc.php /usr/share/sitebar/inc/config.inc.php

としてやる。 ちなみに Apache2 の設定ファイルは /etc/apache2/conf.d/sitebar -> /etc/sitebar/apache.conf という風にシンボリックリンクされている。

DBを復元してなければ復元しておく(Mysql の項を参照)

BIND

$ sudo apt-get install bind9 bind9-doc

データ移行の場合 /etc/bind 以下をがさっと移動させればほぼOKだが一つ注意点 rndc.key だけは移行先のものを上書きしないこと。

移行先で先に

# mv rndc.key rndc.key.bak

とかしてから移行元で

# rsync -arv -e ssh /etc/bind hostname:/etc

とかやる。もちろんホスト名なんかが変わってるので、各ゾーンファイルの ホスト名とシリアル番号の変更は忘れずにやること。

Proftpd

$ sudo apt-get install proftpd
 inetd経由か?standaloneか?と聞かれるので standaloneを選択(好みで)

POPFile

$ sudo apt-get install libtext-kakasi-perl
$ sudo apt-get install popfile
0.22.2が入る

Kakasi をいれとかないと日本語が処理できず動かないので注意。

移行元の /path/to/popfile/popfile.db を移行先の /var/lib/popfile/popfile.db としてやればコーパス、バケツ、マグネットの設定は引き継がれる。メッセージ等は

移行元:$ /path/to/popfile/messages
移行先:$ /var/lib/popfile/messages

となるように移行する。 stopwords も同じ場所にあるので必要ならコピーする。

POPFile を IMAP 対応に

POPFile は POP に関してはプロキシサーバーとして動くものの、IMAP に関してはこれに対応するものがない。 仕方がないので procmail + pipe.pl で処理させていたのだがこれだとコーパスが学習されずどんどん頭悪くなってる気が。

なんとかならんかなと思っていたところ、気がつけば IMAP.pm とかゆうやつがでていたので入れてみた。

POPFile: ExperimentalModules/ImapInstructions
http://popfile.sourceforge.net/cgi-bin/wiki.pl?ExperimentalModules/ImapInstructions

これは、POP のようなプロキシサーバーとして動くのではなく、IMAPサーバーへ常に接続し続け、新規メールがあればスパムフィルタリングした後指定のフォルダ(IMAPの)へ移動させるというもの。うーん、なんかいけてないなぁと思うものの、これを使えば学習もちゃんと行われることだし、fetchmail とか噛ませるよりは素直かな?と思って導入してみた。

Debian sarge で入る POPFile は 0.22.2 であり、上記ページによると対応は 0.22.2 以上なので特にアップデートの必要はない。ただ、コンパイル時に IMAP を使うように設定されていないので以下のように設定する。要は Service/IMAP.pm を /usr/share/popfile 以下にコピーするだけ。

$ apt-get source popfile
$ cd popfile-0.22.2
$ sudo cp -r ./Services /usr/share/popfile
$ sudo /etc/init.d/popfile/restart

UI から各種設定

再起動多いなあ

うまくいっていれば IMAP を定期的に見に行ってくれる。 監視フォルダ数分だけ IMAP に常時接続を貼るという仕様なので、接続数オーバーで IMAP サーバーにつながらなくなった人は

$ vi /etc/courier/imapd

とかで最大接続数を調整するとよい

CPANモジュール関連

Debian は CPAN モジュールも apt で入る場合がある。別にどちらで入れてもいいのだが、 アップデートは当然 CPAN のほうが早いと思う。

APT によるインストール

Imagemagick とかは apt でインストール

$ apt-get install imagemagick perlmagick

CPAN 設定

CPAN を使うのに必要となりそうなパッケージをインストール

$ apt-get install unzip lynx ncftp

CPAN モジュールを起動

$ sudo perl -MCPAN -e shell

色々質問されるのでがんばって答える。

cpan>

というところまで行けば設定終了。 とりあえず、現サーバで使ってそうなモジュールをがさがさとインストール。

cpan> install LWP::UserAgent
cpan> install Image::EXIF
cpan> install MIME::Parser
cpan> install MP3::Info

インストール済みのモジュール一覧を表示する

コンソールで以下を実行すればわんさか出てくる。

$ find `perl -e 'print "@INC"'` -name '.pm' -print

音関係

うちのサーバはラジオ録音サーバだったりもするので ALSA を入れて音をとれるようにしておく。

$ sudo apt-get install alsa-base alsa-modules-2.4.27-2-386

alsa-base alsa-utils libasound2 alsa-modules-2.4.27-2-386 が入る alsa-modules をちゃんと指定して入れてあげないとサウンドカードを認識しないので注意

$ sudo  alsaconf

すれば(サウンドカードさえ認識できれば)勝手に設定を行ってくれる。設定が成功すれば

$ sudo alsamixer

で出力音量とキャプチャデバイスの設定ができる。キャプチャデバイスの設定には Tab キーを押せば入れる。 キャプチャデバイスとして使用したいデバイス(LINEなど)を選択してスペースキーを押せばそのデバイスがキャプチャデバイスとなる。音量を設定し終わったら ESC キーで alsamixer を抜けて、

$ sudo alsactl store

で設定を保存すればOK。

lame encoder

以下を /etc/apt/sources.lst に追加

deb ftp://ftp.nerim.net/debian-marillat/ sarge main

apt でインストールする

$ sudo apt-get update
$ sudo apt-get install lame

Squirrelmail

$ sudo apt-get install squirrelmail
$ /usr/sbin/squirrelmail-configure
$ ln -s /etc/squirrelmail/apache.conf /etc/apache2/conf.d/squirrelmail

その他設定

adduser の設定

複数人が扱うサーバーなので、各ユーザーは users グループに所属させ、ホームディレクトリの権限を 0705 としておく。 こうすると各ユーザーは他の人のホームディレクトリに入ることができない(Web はもちろん見れる)。

# vi /etc/adduser.conf
  USERGROUPS=no
  DIR_MODE=0705

に変更

時計を NTP で自動設定

ntpdate コマンドをインストール

# apt-get install ntpdate

cron に

#!/bin/sh
/usr/sbin/ntpdate -s ntp.ring.gr.jp

なシェルを入れておく。NTPサーバは各自好きな(なるべく近い)サーバを設定するとよい。

rootkit 対策

chkrootkit と rkhunter を両方入れておく。これらは apt から入手可能。

# apt-get install chkrootkit
  -q オプション、あと Daily で実行
# apt-get install rkhunter
  これも Daily で実行

Subversion / Trac

# apt-get install subversion
# apt-get install trac
# python-japanese-codecs

Subversion 用のリポジトリがすでにあるとすれば、以下のような感じで Trac の設定をする。

$ mkdir /path/to/trac
$ cd /path/to/trac
$ trac-admin name initenv

name は Trac で管理するプロジェクト名。好きな名前をつければいいけど、日本語は通らないので注意。 /path/to/trac/name というフォルダができるはず。次に、Apache の設定を追加する。

suExec なしの場合

httpd.conf をいじるだけで全て完結する。追加する内容は trac-admin を実行したときに「これを追加しなはれ」 と親切に出力されるので、それを(パスだけ変更して)コピペすればよい。

$ sudo vi /etc/apache/httpd.conf

以下のような内容を追加

Alias /trac "/usr/share/trac/htdocs/"
ScriptAlias /repos /usr/share/trac/cgi-bin/trac.cgi
<Location /repos>
	SetEnv TRAC_ENV /path/to/trac/name
</Location>

TRAC_ENV 関係でエラーが出る場合は mod_env の設定を追加すること(Apache1.3)

suExec ありの場合

suExec を使っている場合 httpd.conf で SetEnv しても環境変数が適用されないため、tracがうまく動作しない。 また、tracのスクリプト自体は suexec-docroot の外にあるためそもそもエラーが出る。こういう場合の解決策は

ApacheSuexec - TachTrac - Trac
http://tach.arege.net/trac/wiki/ApacheSuexec

に書いてあるように、以下のようなシェルスクリプトをsuexec-docroot以下に適切な権限を設定して置いておけばよい。 これは Apache から渡される環境変数を強制的に変更したい場合などにも役に立つ(参考ページより)。

$ vi /path/to/suexec/trac_wrapper.cgi
--------------------------------------
#!/bin/bash
export TRAC_ENV=/path/to/trac/name
exec /usr/share/trac/cgi-bin/trac.cgi

また、この場合 TRAC_ENV 環境変数はシェルスクリプト内で設定されるので httpd.conf に書く必要はなく、 以下のような内容を追加すればよい。

$ sudo vi /etc/apache/httpd.conf
--------------------------------------
Alias /trac "/usr/share/trac/htdocs/"
ScriptAlias /repos /path/to/suexec/trac_wrapper.cgi

どちらにせよ設定完了したら Apache を再起動

# /etc/init.d/apache restart

NDTPD の設定

辞書サーバーを立ち上げてネットワーク越しに英辞郎とか手持ちの辞書とか串刺し検索しちゃおうぜーな感じ。NDTP は apt でインストールできる。eblookとかは別に入れなくてもいいんだけどローカルから検索したければ入れておく。

$ sudo apt-get install ndtpd freepwing eblook eb-utils

辞書が FREEPWING(EPWING) 形式に変換する必要があるわけだが、英辞郎なんかは TEXT 形式での配布だったりするので手動で変換してやる必要がある。変換用のシェルスクリプトなどもあるのだが今回はWindows上で変換可能なEBStudioを使用することにした。 EBStudioの使い方なんかは以下のページが詳しい。

英辞郎のEPWING化
http://www.ma.ccnw.ne.jp/h-miz/eijiro/eijiro-EPWING.html

ただ、フリーの試用版だと前方一致検索しかできないのだが、まぁこれで十分かなと思う。EBStudio本体は以下からダウンロード。

EB series support page
http://www31.ocn.ne.jp/~h_ishida/

FREEPWING 形式に変換すると

eijiro/DATA
      /HONMON
      /GAIJI

みたいな構成のフォルダができる。waeijiroやotojiroを使っている場合はそのフォルダもできてるはず。 それらをがさっとNDTPサーバーへ FTP なりで転送して

$ mkdir -p /usr/share/dict/eijiro

で辞書保存ディレクトリを作ったら、データをがっさりコピー。

$ cp -r ~/eijiro /usr/share/dict/eijiro/

最終的には /usr/share/dict/eijiro 以下に eijiro, waeijiro, otojiro ryaku みたいにフォルダがくればOK。 あとは /etc/ndtpd/ndtpd.conf を設定するのだが、debian では /etc/ndtpd/book.d/ 以下に eijiro (名前は任意)ファイルを作成して辞書個別の設定を書き、/usr/sbin/update-ndtpd.conf するのが流儀のようである。ということで

$ sudo vi /etc/ndtpd/book.d/eijiro

とし、以下の内容を記述。

###
### eijiro
###
begin book
   name                 eijiro
   title                英辞郎
   path                 /usr/share/dict/eijiro
   hosts                127.0.0.1
end

ndtpd.conf を update しておく。

$ sudo update-ndtpd.conf

iptables を設定

隣国からのアクセスは排除することにする。

韓国 IP アドレスからのパケットを遮断する
http://www.hakusan.tsg.ne.jp/tjkawa/lib/krfilter/index.jsp

からフィルタをダウンロードして設定。 具体的にはこんな感じ。

# iptables -N KRFILTER
# iptables -N KRFILTERED
# sh ./ALL.sh.txt #ダウンロードしてきたファイルを指定する
# iptables -A KRFILTER -j ACCEPT
# iptables -A KRFILTERED -j DROP
# iptables -A INPUT -p tcp -m state --state NEW -j KRFILTER

で、この設定をデフォルトとして保存。起動時に適用されるようにしておく。

# iptables-save > /etc/iptables.filter.rules
# vi /etc/network/interfaces
--------------------------
iface eth0 inet static
	pre-up iptables-restore < /etc/iptables.filter.rules # この行追加
	address 192.168.0.10
	netmask 255.255.255.0
	network 192.168.0.0
	broadcast 192.168.0.255
	gateway 192.168.0.1

これで eth0 を開始する時に指定のフィルタルールを読み込んでくれる。

ログをとりたい場合

# iptables -A INPUT -m state --state NEW -j KRFILTER

を以下のように変更

# iptables -j LOG --log-prefix "Rej-TCP:" --log-level debug
# iptables -A INPUT -m state --state NEW -j KRFILTER

--log-level debug としておくと priority が debug で出力される(facility は kernel)。 kernel/debug なイベントなど通常ほとんどないのでこれでよくね?ということ(らしい)。 あとは syslog.conf に以下を追加しておく。

# vi /etc/syslog.conf

以下を追加

> kern.=debug    -/var/log/iptables.log

klogd とか立ち上がってなければ立ち上げておく dmesg にはログが出力されてるのに syslog に吐かれねーよ!って人はこれが原因ではないかと。

# /etc/init.d/klogd start

SKKの設定

$ sudo apt-get install ddskk skkdic

とすればインストールできる。Emacs で使いたい場合

;; SKK
(set-input-method "japanese-skk")
(toggle-input-method nil)

とか書いておく。

句読点の変更

「、」や「。」を「,」や「.」に変更したい場合、.emacsに以下を追加すればよい

(setq-default skk-kutouten-type 'en) ;; デフォルトは「,」「.」
(define-key ctl-x-map [?\C-.] 'skk-toggle-kutouten)

Cacti

先に SNMP の設定をやってあることが前提なので、やってない場合はそちらをまず参照。

# apt-get install cacti
libgd2-noxpm libphp-adodb librrd0 libsensors3 libsnmp-base libsnmp5 php4-cli php4-snmp rrdtool snmp あたりも一緒に入る。

include path がどうのとか libsensor3 がどうのとか言われるがどのみち OK しか押せないので OK を押す。 libsensor3 なんかは apt-get で勝手に入るので問題ない。php.ini に関しては mysql 関連を更新する必要があるのでやっておく。 あと、cacti データベース用のパスワードを聞かれるので設定しておく

# dpkg-reconfigure php4-mysql

/etc/php4/apache/php.ini, /etc/php4/cli/php.ini に mysql 設定を追加しておく。 別に手で extention = mysql.so を付け足してもよい。

次に、cacti 用データベースを作って、ユーザー cacti にアクセス権限を与えておく。この際設定するパスワードはインストール時に用いたものと同じにすること(当たり前ですが)。また、初期データが /usr/share/doc/cacti/cacti.sql.gz にあるのでインポートしておく。

# mysql -uroot -p -e "create database cacti"
# mysql -uroot -p -e "grant all privileges on cacti.* to cacti@localhost\
 identified by 'password'
# mysql -uroot -p -e "flush privileges"
# zcat /usr/share/doc/cacti/cacti.sql.gz | mysql -ucacti -p cacti

あとは Web からログインして設定していくだけ。 初期の admin のパスワードは admin。初回のログイン時に変更を要求されるので変えておこう。

qmail を Submission ポートで動かす

qmail のリビルド、ソース変更

最近は Outbound Port25 Blocking を採用したプロバイダが増えてきたのでそろそろ サブミッションポートであるPort587でもqmailを動かすことにした。

Submission Port で動かす上でやっておくべきことは

てな感じ。当然qmailはリビルドすることになる、と。

SMTP AUTH 対応のための手順は上に書いた通りなのだが、2つめの条件を満たすためにSMTP AUTH パッチ適用後に少々ソースコードをいじった後にビルドを開始する必要がある。具体的には qmail-smtpd.c の addrallowed() という関数に変更を加え、SUBMISSION環境変数が設定されていたらrcpthostsを 読みにいかないようにすればよい。修正内容はQmailMSPパッチという名前で

aripollak.com
http://www.aripollak.com/wiki/Main/QmailMSP

に掲載されている。 まあ qmail-smtpd.c 内の addrallowed 関数の頭に env_get("SUBMISSION")に失敗したら関数抜けるって処理を加えるだけ。 ソース変更したらビルド、できたパッケージをdpkgでインストール。

起動スクリプトの変更

 --- 前略
 # prevent denial-of-service attacks, with ulimit
  ulimit -v 16384
    sh -c "start-stop-daemon --start --quiet --user qmaild \
    --pidfile /var/run/tcpserver_smtpd.pid --make-pidfile \
    --exec /usr/bin/tcpserver -- -R -H \
    -u `id -u qmaild` -g `id -g nobody` -x /etc/tcp.smtp.cdb 0 smtp \
    $rblsmtpd /usr/sbin/qmail-smtpd /usr/sbin/vchkpw /bin/true 2>&1 \
    | $logger &"

てのが今までの smtpd 起動スクリプト。これの下に次の内容を追加(変更じゃないよ)

    sh -c "SUBMISSION=\"\" exec start-stop-daemon --start --quiet --user qmaild \
    --pidfile /var/run/tcpserver_smtpd_submit.pid --make-pidfile \
    --exec /usr/bin/tcpserver -- -R -H \
    -u `id -u qmaild` -g `id -g nobody` 0 587 \
    $rblsmtpd /usr/sbin/qmail-smtpd /usr/sbin/vchkpw /bin/true 2>&1 \
    | $logger &"

SUBMISSION="" を加えてrcpthostsを読まないようにしておく、あとPOP before SMTPもいらないので、-x オプションを消しておく。あと、Stop時に /var/run/tcpserver_smtpd_submit.pidに対応するプロセスもkillするように変更

stop)
    echo -n "Stopping mail-transfer agent: qmail" $rblmsg
    if [ "`pidof /usr/sbin/qmail-send`" ] ; then
        start-stop-daemon --user qmails --stop --quiet --oknodo --exec /usr/sbin/qmail-send
        start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile \
            /var/run/tcpserver_smtpd.pid --exec /usr/bin/tcpserver 
        start-stop-daemon --user qmaild --stop --quiet --oknodo --pidfile \ #この2行
            /var/run/tcpserver_smtpd_submit.pid --exec /usr/bin/tcpserver   #

できたら再起動

/etc/init.d/qmail restart

動作確認

外部ホストから試すこと

$ telnet smtp.avoidnotes.org 25
220 smtp.hoge.org ESMTP
EHLO localhost
250-smtp.hoge.org
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
MAIL FROM:test@hoge.org  <-- 差し出し人メールアドレス
250 ok
RCPT TO:xxx@somewhere.org <-- rcpthosts に含まれないアドレスにすると
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
<--rcpthosts に含まれないからリレー不可というメッセージ
RCPT TO:xxx@avoidnotes.org <-- たとえば rcpthosts に含まれるアドレスにすると
250 ok <-- ちゃんといく
QUIT <-- QUITで終了します。
221 smtp.hoge.org
Connection closed by foreign host.

Submission ポートを使ったメール配送では、25番ポートはサーバー間のメール配送に、587番ポートはクライアントのメール投稿用に使われる。Submission を使った配送の正しいありかたとしては SMTP は rcpthosts 宛は全て許可、RELAYCLIENTは設定しない(つまり、クライアント投稿の場合ローカル以外へのメール送信を許可しない)のだろうけど実際のところリモートアクセスに25番ポート使ってる人はまだいるので、周知期間はポート25でも送信可能にしておいた。

次に、Port587を使った送信テスト

$ telnet smtp.avoidnotes.org 587
220 smtp.hoge.org ESMTP
EHLO localhost
250-smtp.hoge.org
250-AUTH LOGIN CRAM-MD5 PLAIN
250-AUTH=LOGIN CRAM-MD5 PLAIN
250-PIPELINING
250 8BITMIME
MAIL FROM:test@hoge.org  <-- 差し出し人メールアドレス
250 ok
RCPT TO:xxx@somewhere.org <-- rcpthosts に含まれないアドレスにすると
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
<--rcpthosts に含まれないからリレー不可というメッセージ
RCPT TO:xxx@avoidnotes.org <-- rcpthosts に含まれるアドレスにすると
553 sorry, that domain isn't in my list of allowed rcpthosts (#5.7.1)
<-- これもいかない。
QUIT <-- QUITで終了します。
221 smtp.hoge.org
Connection closed by foreign host.

てな感じになればOK。 Submission ポートはクライアント間のメール投稿にのみ用いられる。 したがって、この場合、認証なしでは一切のメールが配送できない(ローカル宛もダメ)というのが正しい動き。

EHLO の後に AUTH で認証を行えば RCPT TO が通るようになることも確認しておくとよい(やり方は上のほうのqmailの項参照)。

メモ

$ sudo apt-cache policy パッケージ名

するとどのバージョンのパッケージが落ちてくるか(正確にはどの apt-line からダウンロードするか)がわかる