XMail セットアップ – linux版

X-Mailインストール手順 – linux版
参考:難波鷹史のリーディングログ – 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の1.*パッケージをダウロードして展開後
  XMailのソースファイルの下へコピーする
   # wget https://www.openssl.org/source/openssl-1.1.n*.tar.gz
  (n* はバージョン)
  (2022/05/03時点では openssl-1.1.1o )
   # tar xzvf openssl-1.1.n*.tar.gz
   # cp /openssl-1.1.n*/include/openssl/*.h /xmail-1.27/openssl/
  ※3
   openllsconf.h の参照不足が発生する場合、 libssl-dev をインストールする
    # apt install libssl-dev
    # cp /usr/include/x86_64-linux-gne/openssl/opensslconf.h /usr/include/openssl/

  インストールを実施
   # cd openssl-1.1.n*
   # ./config
   # make install

  OpenSSL実行ファイルのシンボリックリンク作成
   # ln -s /usr/local/ssl/bin/openssl /usr/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   ドメインやユーザーを新規作成する度に   作成したドメイン・ユーザーのディレクトリやファイルの所有者を   Webサーバー実行ユーザーに変更しないと、   XMailCFGやXMailk4からの操作は不可能
  ↑XMailCFG側で対応して頂いたので不要?(XMailCFGの環境設定で実行ユーザーの定義が必要)  ※5   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