参考:難波鷹史のリーディングログ – XMailの構築Linux版インストールの補完
*以下、root権限で実行してください
(Ubuntu系なら sudo で実行)
1.XMailのダウンロード # wget https://www.xmailserver.org/xmail-1.27.tar.gz 2.tarコマンドで展開 # tar xvfz xmail-1.27.tar.gz 3.展開したディレクトリへ移動 # cd xmail-1.27 4.ソースファイルからのコンパイル # make -f Makefile.lnx ↑.lnx がlinux用 ※1 UbuntuのOS初期状態でmakeコマンドが実行できない場合 aptにてインストールが必要 # apt update # apt install build-essential CentOSにて サーバー(GUI) でインストールした場合もmakeコマンドが実装されていないので gccとg++をインストールする # yum install -y gcc gcc-c++ ※2 make実行でエラーが発生することがある /usr/bin/ld: cannot find -lssl /usr/bin/ld: cannot find -lcrypto sslとcryptoのライブラリは /usr/lib/x86_64-linux-gnu/ (または /lib/x86_64-linux-gnu/ )配下にあるので /usr/lib/ にシンボリックリンクを作成する # ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.*.* /usr/lib/libssl.so # ln -s /usr/lib/x86_64-linux-gnu/libcrypto.so.1.*.* /usr/lib/libcrypto.so *CentOSは /usr/lib64/ 配下にあるが、検索パスが通ってるので設定不要? 他にもOpenSSL関係で参照不足が発生する為 OpenSSLの3.0.*パッケージをダウロードして展開後 XMailのソースファイルの下へコピーする # wget https://github.com/openssl/openssl/releases/download/openssl-3.0.n*/openssl-3.0.n*.tar.gz (n* はバージョン) (2025/05/09時点では openssl-3.0.16 ) # tar xzvf openssl-3.0.n*.tar.gz # cp /openssl-3.0.n*/include/openssl/*.h /xmail-1.27/openssl/ ※3 opensslconf.h の参照不足が発生する場合、 libssl-dev をインストールする # apt install libssl-dev # cp /usr/include/x86_64-linux-gne/openssl/opensslconf.h /usr/include/openssl/ TabIndex.cpp で error; ordered comparison of pointer with integer zero (‘char*’ and ‘int’) が発生する場合 対象行の TbixGetIndexFile を → *TbixGetIndexFile に修正する → 対象行:167、466、536、560 インストールを実施 # cd openssl-1.1.n* # ./config # make install OpenSSL実行ファイルのシンボリックリンク作成 # ln -s /usr/local/bin/openssl /usr/bin/openssl (古い実行ファイルは削除あるいはファイル名を変更しておく) 実行ファイルのパス検索 # which openssl 共有ライブラリのパス検索 # ldd /usr/local/bin/openssl 再コンパイルする際、ゴミファイルを削除しておく # cd xmail-1.27 # rm SysMachine.h # rm bin/* 5.ファイル群のコピーとオーナー変更 # cp -r MailRoot /var # cp bin/xmail /var/MailRoot/bin # cp bin/CtrlClnt /var/MailRoot/bin # cp bin/Mkusers /var/MailRoot/bin # cp bin/XMCrypt /var/MailRoot/bin # cp bin/sendmail /var/MailRoot/bin OpenSSLの実行ファイルもコピーする # cp /usr/local/ssl/bin/openssl /var/MailRoot/bin XMailCFGやXMailk4を利用する場合、所有者をWebサーバー(apache)の実行ユーザーに 変更しておかないと、Webからの操作が何も出来ない (Debian/Ubuntu系 → www-data / CentOS → apache) # chown -R www-data:www-data /var/MailRoot※4↑XMailCFG側で対応して頂いたので不要?(XMailCFGの環境設定で実行ユーザーの定義が必要) ※5ドメインやユーザーを新規作成する度に作成したドメイン・ユーザーのディレクトリやファイルの所有者をWebサーバー実行ユーザーに変更しないと、XMailCFGやXMailk4からの操作は不可能XMailCFGを使用する際、File::Stat や Net::Smtp の呼び出しでエラーが発生することがある。原因はXMailCFG側の呼び出しが、実際のファイル名と大文字小文字の違いがある為。大文字小文字違いでも呼び出せるよう、シンボリックリンクを作成しておく。# ln -s /usr/share/perl/5.**.*/File/stat.pm /usr/share/perl/5.**.*/File/Stat.pm# ln -s /usr/share/perl/5.**.*/Net/SMTP.pm /usr/share/perl/5.**.*/Net/Smtp.pm*XMailCFG側で対応して頂いたので不要 Let's Encrypt を利用した SSL/TSL通信をする場合、 Let's Encrypt で取得した証明書と秘密鍵へシンボリックリンクを作成する # ln -s /etc/letsencrypt/live/{ドメイン名}/cert.pem /var/MailRoot/server.cert # ln -s /etc/letsencrypt/live/{ドメイン名}/privkey.pem /var/MailRoot/server.key *Let's Encryptのインストール方法は「Linuxサーバー初期設定」に記載 6.XMail Linux版の起動設定 ・起動スクリプトを最初に展開したディレクトリから/etc/init.d/ 以下にコピーする # cp xmail /etc/init.d/ ・起動スクリプトの編集 # vi /etc/init.d/xmail XMailCFG - 基本セットアップ - レジストリの登録 の中に コマンドラインオプションが記載されているので、参考にして作成する 例 XMAIL_CMD_LINE="-Cl -Mr 24 -Pl -Ql -Sl -Cp 6017 -Wp 6018 -Fp 79 -Pp 110 -Bp 995 -Xp 465 -SI 0.0.0.0:25 -SI 0.0.0.0:587" ・スクリプトに実行属性を設定 # chmod 755 /etc/init.d/xmail ・起動の設定 # update-rc.d /etc/init.d/xmail defaults ※削除する場合 -> # update-rc.d -f xmail remove 【サービスに登録する場合】*検証中。。。環境によってエラーが出ます。 ・/etc/init.d/xmail をエディタで開いて、下記ヘッダーを10行目以降に追記する ----ここから ### BEGIN INIT INFO # Provides: XMail Service # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: XMail ### END INIT INFO ----ここまで ・/lib/systemd/system/xmail.service を作成する # vi /etc/systemd/system/xmail.service ・以下の内容を書き込む [Unit] Description=XMail After=network.target [Service] User=root Group=root Type=oneshot RemainAfterExit=yes WorkingDirectory=/var/MailRoot/ ExecStart=/etc/init.d/xmail start ExecStop=/etc/init.d/xmail stop Restart=on-failure [Install] WantedBy=multi-user.target ・サービスを有効にする # systemctl enable xmail ・サービスを開始 # systemctl start xmail ・サービスを停止 # systemctl stop xmail 7.sendmailコマンドの置き換え *参考にさせて頂いたサイトの方で、この記述はちょっと怪しいと削除されたので、実施の際は気をつけて下さい。 *私の管理サーバーでは sendmail は使用しておらず Net::SMTP(Perlモジュール) を使用しています。 # cp sendmail.sh /var/MailRoot/sendmail.sh ・スクリプト修正 # vi /var/MailRoot/sendmail.sh 末尾の文字列を、sendmailの実行ファイル(/var/MailRoot/bin/sendmail) へリンクされるように修正 /usr/sbin/sendmail.xmail ↓ /var/MailRoot/bin/sendmail ・スクリプトに実行権限をつける # chmod +x /var/MailRoot/sendmail.sh ・スクリプトへのシンボリックリンクを作る # ln -s /var/MailRoot/sendmail.sh /usr/sbin/sendmail # ln -s /var/MailRoot/sendmail.sh /usr/lib/sendmail