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

のように作成したユーザ名を"="の右側に書いてください.

ドメイン作成・ユーザ作成を試してください.

問題なければできるはずです.