XMailCFG Linux移植手順†
とりあえずのメモです.動作を保証するわけではなく,動作しても基本的な機能だけです.
動作確認環境は,CentOS4.3,FedoraCore5,FedoraCore6です.
XMail1.23上でXMailCFG2.24aでの場合です.
また,SUEXECが必須です.
変更後のファイルの公開予定はありません.今後XMailCFGが更新されてもすぐに対応させられる保証ができないためです.
基本的にこの操作をすれば,今後大きなバージョンアップがない限り,できるのではないかと思っています.
どうしても変更後のファイルがほしい方はhttp://www.teu.ac.jp/linux/の「問合せ」よりご連絡下さい.
XMailのインストール†
- RPMの作成とインストール
ダウンロードしたxmail-1.23.tar.gzのSPECファイルはCopyRightタグが使われているため,これをLicenseタグに書き換え,ビルドします.
# rpmbuild -tb xmail-1.23.tar.gz
i386アーキテクチャであれば/usr/src/redhat/RPMS/i386にRPMができるので,
# rpm -Uvh xmail*.rpm
などとしてDebuginfoもインストール(アップデート)します.
一応,i386ビルドしたrpmを置いておきます.できるだけ自身でビルドしたほうがいいですが...
- Web実行用ユーザの作成
XMailのMailRootディレクトリに対し,Apacheから読み取り権限が必要になりますが,
Apacheユーザではセキュリティ上の問題があるため,XMail専用のユーザを作成し,SuEXECでCGIをxmailadminユーザで動作させます.# useradd xmailadmin
そしてMailRootディレクトリに対してそのユーザの権限にします.
# chown -R xmailadmin.xmailadmin /var/MailRoot
- 【取扱注意】暫定対処法
XMailに含まれる,CtrlCtlプログラムはドメインやユーザ作成時に用いられますが,
SuEXECしようがrootユーザの700権限で作成されてしまうようです.(調査中)
とりあえずの対処として,セキュリティ上,問題がありますが,Sビットを立てたchwonを用意します.# cp /bin/chown /var/MailRoot/bin # chmod u+s /var/MailRoot/bin/chown
XMailCFGの書き換え†
ここから先はxmailadminユーザで作業を行います.
http://hogehoge.hoge/~xmailadmin/xmailcfgではなくhttp://hogehoge.hoge/xmailとして運用したい方は,Apacheの設定で行っておいてください.
ここではXMailCFGを
http://hogehoge.hoge/~xmailadmin/XMailCFG
K4をhttp://hogehoge.hoge/~xmailadmin/k4
として運用することを前提として話を進めます.
- 下準備
$ cd $ mkdir public_html $ cd public_html $ mkdir XMailCFG $ unzip XMailCFG224a.zip <---ダウンロードして解凍 $ cd cgi
とりあえずCGIの一行目を書き換えるsetup.plを編集する.
foreach (split(/;+/,"$ENV{'PATH'}")){ $_ =~ s/[\\\/]+$//g; $perlpath = "/usr/bin/perl"; ;#上の一行を追加してif文をコメントアウトする ;# if (-f "$_\\perl.exe"){ ;# $perlpath = "$_\\perl.exe"; ;# last; ;# } }文字コードなどのカスタマイズはご自由に・・・
$ perl setup.pl
を実行する.
- 置換
ディレクトリ区切り文字の修正や問題のある改行コードを置換する.cgiディレクトリ内で
$ mkdir org $ cp *.cgi org
としてバックアップを作成しておき,
for convert in `ls *.cgi` do cat org/$convert |sed 's/\\\\\$\([a-zA-Z]\)/\/\$\1/g' | sed 's/\([a-zA-Z]\)\\\\/\1\//g' |sed 's/\(}\)\\\\/\1\//g' | sed 's/\/\^\$\//\/\^\\r\\n\$\//g'> $convert echo "convert $convert" done
を実行するかスクリプトファイルとしておいて実行する.一部修正が必要.
cfgenv.cgiの63行目あたりは,$value =~ s/[\s\\]+$//;
が正しいので手動修正する.そののち,
$ chmod +x *.cgi
を実行して権限を付与
- domain_new.cgi
domainaddコマンドを実行した後に,さきほどのchownで所有者を変更する.
&ctrlcmd("\"domainadd\" \"$domain\"");が60行目くらいにあると思うので,その次の行に
system("$cfg{'xmaildir'}/chown -R $cfg{'xmailuser'} $cfg{'mailroot'}/domains/$domain");を追加する.
この$cfg{'xmailuser'}は後にconfig.local.cgiに追記するが,
代わりにxmailadminのようにユーザ名を直打ちした方が安全かもしれない. - user_new.cgi
こちらも同様にuseraddコマンドの後に実行する.
&ctrlcmd("useradd $domain $name $pass U");のつぎの行に
system("$cfg{'xmaildir'}/chown -R $cfg{'xmailuser'} $base/$name"); - list_new.cgi
これも同様.
&ctrlcmd("\"useradd\" \"$domain\" \"$name\" \"$pass\" \"M\"");の次の行に
system("$cfg{'xmaildir'}/chown -R $cfg{'xmailuser'} $base/$name"); - config.cgi
次の項目を変更する.
$mailbox = 'Maildir/new'; # メールボックス名 $ctrlclnt = 'CtrlClnt'; # コントロールクライアント
- cfgenv.cgi
次の項目を変更する.nn:はおおよその行数を表す.
47: $xmailexe = 'XMail' if !$xmailexe; 67: #foreach (qw(xmaildir mailroot scanner k4dir kmldir ipmsg)){ 68: # $$_ =~ s/[\/\\]+/\\/g; 69: #} 119: #if ($xmailexe !~ /\.exe/i){&html("実行ファイル名は拡張子(.exe)まで書いてください!");} 122: } else {$xmailexe = "XMail";} 160: if (!$cfg{'xmailexe'}){$cfg{'xmailexe'} = 'XMail';}
- xmailenv.cgi
#if (!-d "$ENV{'SystemRoot'}/system32"){&error('10',"$xmailcfg は Windows 2003/XP/2000/NT 上で利用してください!");} - user_home.cgi
#Sが大文字なので小文字に 5: use File::stat;
- /etc/init.d/xmail
Linuxではサービスの登録はすでに行われているので,パラメータ変更は手動でお願いします.
XMAIL_CMD_LINE="-Cl -Mr 24 -Pl -Ql -Sl"
ここでサービスの再起動が必要です.
基本セットアップのちょっとだけ実行†
これでアクセスできるはずです.500エラーとかは権限を確認してください.suexec.logとか.
基本セットアップのうち,
- XMailCFG環境設定
- 基本セキュリティ
- XMail環境設定
のみ利用できるので,実行してください.
ウイルススキャンはまだやってないので,ダメです.
config.local.cgiを編集しないと作成できません!!†
ドメイン作成はまだこの段階でできません.cgiディレクトリ内に作成された,config.local.cgiファイルを開き,最終行に
xmailuser = xmailadmin
のように作成したユーザ名を"="の右側に書いてください.
ドメイン作成・ユーザ作成を試してください.†
問題なければできるはずです.





