😽

Rocky Linux 9にSympaを導入

に公開

Rocky Linux 9にSympaを導入する

はじめに

諸用でメーリングリストSympaの構築をしたのでそのときの備忘録などを含めてzennにまとめます.近年は2025年5月にMicrosftが2024年3月ごろにAppleとGoogleがメール認証においてDKIMなどを必須化したことで太古のメーリングシステムからの以降を余儀なくされている方も多いのではないかと思います.mailman2系からの移行先としてはSympaやmailman3があげられると思います.今回はSympaを構築・運用していく過程を記事としてまとめたいと思います.まずはその構築編です.
基本的には公式ドキュメントに沿いつつ,実際の運用も考慮しながら書いています.筆者はサーバー管理業務を委託で数年ほどしておりますが,正直専門の人間ではないので,変なところがあったらご指摘ください.
基本的にはこの公式ドキュメントを読めば問題ないと思います.こちらも合わせてご確認ください→https://www.sympa.community/manual/
生成AIを使用して執筆を行っておりますが,全文確認は行っております

環境

  • OS: Rocky Linux 9.6 (Blue Onyx)
  • Sympa: 6.2.76
  • MariaDB: 10.5.27
  • Apache httpd: 2.4.x
  • Postfix: 3.5.x
  • Perl: 5.32.1

前提条件

  • rootまたはsudo権限を持つユーザーでの作業
  • インターネット接続が可能
  • メーリングリスト用のドメイン名を取得済み(例: example.comとして以下記載)

1. システム要件の確認

1.1 OSの確認

cat /etc/os-release

Rocky Linux 9系であることを確認します.

1.2 Perlバージョンの確認

perl -v

SympaはPerl 5.16.0以降が必要です.Rocky Linux 9にはPerl 5.32.1が標準で入っているため問題ありません.

1.3 既存サービスの確認

# データベース
systemctl status mariadb
systemctl status mysqld

# MTA(メール転送エージェント)
systemctl status postfix

# HTTPサーバー
systemctl status httpd

私の構築した環境では既にPostfixとApacheが稼働させていたので,それらは割愛します.(以下MTAとしてPostfix, HTTPサーバーとしてApacheを使用します)

2. システムの更新

sudo dnf update -y

3. MariaDBのインストールと設定

MySQLで問題はないと思うのですが,今回は委託業務の一環だったので商用ライセンスなどの問題で念の為MariaDBを使用しました.使ってみてMySQLとほぼ(というか現状は全く)変わらないです.(おそらく公式ドキュメントでも同じくくりだったので同じようにできるかと思います:未確認)

3.1 インストール

sudo dnf install -y mariadb-server mariadb

3.2 サービスの起動と有効化

sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo systemctl status mariadb

3.3 セキュリティ設定

sudo mysql_secure_installation

対話形式で以下のように設定します:

  • Enter current password for root: そのままEnter(初期状態ではパスワードなし)
  • Switch to unix_socket authentication: n(既にデフォルトで有効)
  • Change the root password?: Y(強力なパスワードを設定)
  • Remove anonymous users?: Y
  • Disallow root login remotely?: Y
  • Remove test database: Y
  • Reload privilege tables now?: Y

注意: ここで設定したrootパスワードは後で使うので必ず記録しておいてください。

3.4 Sympa用データベースの作成

sudo mysql -u root -p

MariaDBにログイン後、以下のSQLを実行:

CREATE DATABASE sympa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'sympa'@'localhost' IDENTIFIED BY '強力なパスワード';
GRANT ALL PRIVILEGES ON sympa.* TO 'sympa'@'localhost';
FLUSH PRIVILEGES;
EXIT;

注意: utf8mb4を使用することで、絵文字などの4バイト文字にも対応できます。

4. システムログの設定

4.1 ログファイルの作成

sudo touch /var/log/sympa.log
sudo chmod 640 /var/log/sympa.log
sudo chown sympa:sympa /var/log/sympa.log

4.2 rsyslog設定

Rockey Linuxではsyslogがrsyslogになっています.それぞれ各自の環境で読み替えてください.

sudo vi /etc/rsyslog.d/sympa.conf

以下を記述:

# Sympa logging
local1.*    -/var/log/sympa.log

(おそらく最初から書いてあると思うのでそのままでOK)

4.3 rsyslogの再起動

sudo systemctl restart rsyslog

4.4 動作確認

sudo sympa test syslog
sudo tail /var/log/sympa.log

Logs seems OK, default log level 0 というメッセージが表示されればOKです。

5. Sympaのインストール

5.1 EPELリポジトリの確認

dnf repolist | grep epel

Rocky Linux 9では通常,EPELリポジトリが既に有効になっているので,一応確認です.

5.2 Sympaのインストール

sudo dnf install -y sympa

これにより,Sympa本体と大量の依存Perlモジュールがインストールされます.

6. Sympaの基本設定

6.1 設定ファイルのバックアップ

Sympaの設定を変える前に一度バックアップをとっておきましょう.

sudo cp /etc/sympa/sympa.conf /etc/sympa/sympa.conf.backup

6.2 sympa.confの編集

sudo vi /etc/sympa/sympa.conf

以下の項目を設定します.基本的には,全部項目はあるのでコメントアウトをはずして使えばOK.リストマスターに設定するメールアドレスはちゃんと受け取れることを確認しましょう(1敗)

# ドメイン設定
domain              example.com

# リストマスター(管理者のメールアドレス)
listmaster          admin@example.com

# データベース設定
db_type             mysql
db_name             sympa
db_host             localhost
db_user             sympa
db_passwd           データベース作成時に設定したパスワード

# Webインターフェース
wwsympa_url         https://mail.example.com/sympa

# エイリアス管理
aliases_program     postalias
sendmail_aliases    /var/lib/sympa/sympa_aliases

複数管理者の設定: listmasterには複数のメールアドレスをカンマ区切りで指定できます

listmaster  admin1@example.com, admin2@example.com, admin3@example.com

6.3 設定の確認

grep -v "^#" /etc/sympa/sympa.conf | grep -v "^$"

コメント行と空行を除いた設定内容が表示されます.重複してないかなどを確認しましょう.

7. メールサーバー(Postfix)の設定

今回はSingle domain setting(単一ドメイン設定)で進めます。複数のドメインでメーリングリストを運用する場合は、公式ドキュメントのVirtual domain settingを参照してください:https://www.sympa.community/manual/install/configure-mail-server-postfix.html#:~:text=ways by each.-,Virtual domain setting,-Initial setting

7.1 Sympaエイリアスファイルの編集

sudo vi /etc/sympa/aliases.sympa.postfix

my.domain.orgを実際のドメイン名に変更:

# Robot aliases for Sympa.
sympa:              "| /usr/libexec/sympa/queue sympa@example.com"
listmaster:         "| /usr/libexec/sympa/queue listmaster@example.com"
bounce:             "| /usr/libexec/sympa/bouncequeue sympa@example.com"
abuse-feedback-report: "| /usr/libexec/sympa/bouncequeue sympa@example.com"
sympa-request:      postmaster
sympa-owner:        postmaster

7.2 Sympaエイリアスファイルの作成

sudo touch /var/lib/sympa/sympa_aliases
sudo chmod 640 /var/lib/sympa/sympa_aliases
sudo chown sympa:sympa /var/lib/sympa/sympa_aliases

7.3 エイリアスデータベースの作成

sudo postalias hash:/etc/sympa/aliases.sympa.postfix
sudo sympa_newaliases.pl

警告について: 実行時にwarning: removing zero-length database fileという警告が出ますが,これは正常な動作です.

7.4 Postfix main.cfの編集

sudo vi /etc/postfix/main.cf

ファイルの最後に以下を追加:

# Sympa configuration
alias_maps = hash:/etc/aliases, hash:/etc/sympa/aliases.sympa.postfix, hash:/var/lib/sympa/sympa_aliases
alias_database = hash:/etc/aliases, hash:/etc/sympa/aliases.sympa.postfix
recipient_delimiter = +

7.5 Postfixの設定確認と再起動

sudo postfix check
sudo systemctl restart postfix
sudo systemctl status postfix

postfix checkでエラーが出なければOKです。

8. HTTPサーバー(Apache)の設定

8.1 sympa-httpdのインストール

sudo dnf install -y sympa-httpd

このパッケージにより,Apache用の設定ファイルが自動で配置されます.(最初に同時にインストールしてもよかったかもしれませんが怖かったので一応別でインストールしました.)

8.2 Apache設定ファイルの確認

cat /etc/httpd/conf.d/sympa.conf

8.3 アクセス制御の設定

デフォルトではRequire localとなっており、ローカルホストからしかアクセスできません。

sudo vi /etc/httpd/conf.d/sympa.conf

以下の部分を編集:

全体に公開する場合:

<Location /sympa>
    SetHandler "proxy:unix:/var/run/sympa/wwsympa.socket|fcgi://localhost"
    #Require local
    Require all granted
</Location>

特定のIPアドレス範囲のみ許可する場合:

<Location /sympa>
    SetHandler "proxy:unix:/var/run/sympa/wwsympa.socket|fcgi://localhost"
    #Require local
    Require ip 192.168.1.0/24
    Require ip 10.0.0.0/8
</Location>

8.4 Apacheの設定確認と再起動

sudo apachectl configtest
sudo systemctl restart httpd
sudo systemctl status httpd

8.5 ファイアウォールの設定

sudo firewall-cmd --list-all

http、https、smtpが開いていることを確認します。開いていない場合:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-service=smtp
sudo firewall-cmd --reload

9. Sympaサービスの起動

9.1 wwsympa(Webインターフェース)の起動

sudo systemctl start wwsympa
sudo systemctl enable wwsympa
sudo systemctl status wwsympa

9.2 Sympaメインサービスの起動

sudo systemctl start sympa
sudo systemctl enable sympa
sudo systemctl status sympa

両方ともActive: active (running)となっていればOKです。

10. 初回ログイン

10.1 Webインターフェースへのアクセス

ブラウザで以下にアクセス:

https://mail.example.com/sympa

10.2 パスワードの設定

  1. 右上の「ログイン」をクリック
  2. 「初回ログイン」をクリック
  3. sympa.confで設定したlistmasterのメールアドレスを入力
  4. メールでパスワード設定用のリンクが送られてくる
  5. リンクをクリックしてパスワードを設定

10.3 メールが届かない場合のトラブルシューティング

# メール送信ログの確認
sudo tail -50 /var/log/maillog

# Sympaログの確認
sudo tail -50 /var/log/sympa.log

# メールボックスの確認(maildirの場合)
sudo ls -la /home/ユーザー名/Maildir/new/

私は構築地点でまだ旧サーバーからDNSを切り替えていなかったのでここから直接Base64でデコードしました,同じサーバー内であれば問題なく配送されると思いますので,必要によっては.

まとめ

Rocky Linux 9へのSympa導入手順をまとめました.公式ドキュメントに沿って進めることで,比較的スムーズに導入できますが,いくつか躓いたポイントと一緒に作業ログを書き留めておきます.今後Sympaの運用を行なっていく上でまた記事を書こうと思います.

参考資料

変更履歴

  • 2025-10-12: 初版公開

Discussion