CentOS Stream release 8にて、Mailman2.1系の設定、覚え書き。
Postfix、httpdを使っています。
Mailman 3.3 もありますが、CentOS8 + Mailman3.3では、うまく設定できませんでした。
今後とも、チェックをしていきます。
今回は、Mailman 2.1系を、CentOS8系でやってみます。
Python 2.x & Mailman 2.1
Mailman 2.1系は、Python 2.x 系で動きます。
CeontOS8系以降は、Python 3.x が標準で、Python 2.x はインストールされていません。
基本的に、Python 2.x 周りをインストールすれば、Mailman 2.1 系が動きます。
恐れることはないです(笑)。
Python 2.1
# cat /etc/centos-release CentOS Stream release 8 # python3 --version Python 3.6.8
↑ python 3.6.x が入っています。
# yum install python2 Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use subscription-manager to register. (略) Installed: python2-2.7.18-6.module_el8.5.0+772+8dae0bfd.x86_64 python2-libs-2.7.18-6.module_el8.5.0+772+8dae0bfd.x86_64 python2-pip-9.0.3-18.module_el8.5.0+743+cd2f5d28.noarch python2-pip-wheel-9.0.3-18.module_el8.5.0+743+cd2f5d28.noarch python2-setuptools-39.0.1-13.module_el8.5.0+743+cd2f5d28.noarch python2-setuptools-wheel-39.0.1-13.module_el8.5.0+743+cd2f5d28.noarch Complete!
# python2.7 --version Python 2.7.18
↑ python 2.7.18 が入りました。
Mailman 導入
# /etc/passwd mailman:x:261:261::/home/mailman:/bin/bash # /etc/group mailman:x:261:
↑ ID、グループを設定します。
# mkdir /home/mailman # chown mailman.mailman /home/mailman/ # chmod g+s /home/mailman/ # chmod 775 /home/mailman/
↑ mailmanのディレクトリを設定します。
# pip2.7 install dnspython WARNING: Running pip install with root privileges is generally not a good idea. Try `pip2.7 install --user` instead. Collecting dnspython Downloading https://files.pythonhosted.org/packages/ec/d3/3aa0e7213ef72b8585747aa0e271a9523e713813b9a20177ebe1e939deb0/dnspython-1.16.0-py2.py3-none-any.whl (188kB) 100% |■■■■■■■■| 194kB 4.1MB/s Installing collected packages: dnspython Successfully installed dnspython-1.16.0
# yum install python2-devel Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use subscription-manager to register. (略) Installed: python2-devel-2.7.18-6.module_el8.5.0+772+8dae0bfd.x86_64 python2-rpm-macros-3-38.module_el8.5.0+743+cd2f5d28.noarch python3-rpm-generators-5-6.el8.noarch Complete!
↑ 関係ライブラリを入れます。
# wget http://ftp.gnu.org/gnu/mailman/mailman-2.1.34.tgz # tar xzvf mailman-2.1.34.tgz # cd mailman-2.1.34 # ./configure --prefix=/home/mailman/ --with-mail-gid=mailman --with-cgi-gid=apache --with-python=/usr/bin/python2.7 (略) config.status: creating build/cron/mailpasswds config.status: creating build/cron/nightly_gzip config.status: creating build/cron/senddigests config.status: executing default commands configuration completed at XXX XXX XX XX:XX:XX JST XXXX
↑ configureが通りました。
# cd /home/mailman/ # bin/check_perms -f
↑上記、コマンドを何回か、繰り返してエラーがなくなるまで実行します。
# /home/mailman/bin/newlist Mailman@ドメイン名 通知アドレス パスワード To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the `newaliases' program: ## mailman mailing list mailman: "|/home/mailman/mail/mailman post mailman" mailman-admin: "|/home/mailman/mail/mailman admin mailman" mailman-bounces: "|/home/mailman/mail/mailman bounces mailman" mailman-confirm: "|/home/mailman/mail/mailman confirm mailman" mailman-join: "|/home/mailman/mail/mailman join mailman" mailman-leave: "|/home/mailman/mail/mailman leave mailman" mailman-owner: "|/home/mailman/mail/mailman owner mailman" mailman-request: "|/home/mailman/mail/mailman request mailman" mailman-subscribe: "|/home/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/home/mailman/mail/mailman unsubscribe mailman"
↑「Mailman」というメーリングリストを作成します。
# /home/mailman/bin/list_lists 1 matching mailing lists found: Mailman - [no description available]
↑ list_lists コマンドを実行すると、「Mailman」が作成されているのがわかります。
# /home/mailman/bin/newlist (メーリングリスト宛先) (管理人アドレス) (パスワード) To finish creating your mailing list, you must edit your /etc/aliases (or equivalent) file by adding the following lines, and possibly running the `newaliases' program: ## test mailing list test: "|/home/mailman/mail/mailman post test" test-admin: "|/home/mailman/mail/mailman admin test" test-bounces: "|/home/mailman/mail/mailman bounces test" test-confirm: "|/home/mailman/mail/mailman confirm test" test-join: "|/home/mailman/mail/mailman join test" test-leave: "|/home/mailman/mail/mailman leave test" test-owner: "|/home/mailman/mail/mailman owner test" test-request: "|/home/mailman/mail/mailman request test" test-subscribe: "|/home/mailman/mail/mailman subscribe test" test-unsubscribe: "|/home/mailman/mail/mailman unsubscribe test" Hit enter to notify test owner...
↑ 新しいメーリングリストの設定。
「test@ドメイン」というメーリングリストを設定しました。
Mailman 自動起動
# vi /etc/systemd/system/mailman.service [Unit] Description=mailman After=network.target [Service] Type=simple RemainAfterExit=yes ExecStart=/home/mailman/bin/mailmanctl -s start ExecStop=/home/mailman/bin/mailmanctl stop [Install] WantedBy=multi-user.target
↑「mailmanctl」コマンドに「-s」を起動しているのは、不用意な再起動でも、自動的に起動するようにと・・・
# systemctl start mailman # systemctl enable mailman
↑サービスを起動させ、自動起動も設定します。
# ps ax |grep mailman 44237 ? Ss 0:00 /usr/bin/python2.7 /home/mailman/bin/mailmanctl start 44238 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=ArchRunner:0:1 -s 44239 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=BounceRunner:0:1 -s 44240 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=CommandRunner:0:1 -s 44241 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=IncomingRunner:0:1 -s 44242 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=NewsRunner:0:1 -s 44243 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=OutgoingRunner:0:1 -s 44244 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=VirginRunner:0:1 -s 44245 ? S 0:00 /usr/bin/python2.7 /home/mailman/bin/qrunner --runner=RetryRunner:0:1 -s
↑ python 2.7 で、Mailmanが起動しました。
Postfixとの連携、Mailman側設定
# vi /home/mailman/Mailman/mm_cfg.py MTA = 'Postfix' DEFAULT_SERVER_LANGUAGE = 'ja' POSTFIX_STYLE_VIRTUAL_DOMAINS = ['(ドメイン1)','(ドメイン2)'] VIRTUAL_MAILMAN_LOCAL_DOMAIN = '(ドメイン1),(ドメイン2)' add_virtualhost('(ドメイン1)','(ドメイン1)') add_virtualhost('(ドメイン2)','(ドメイン2)') DEFAULT_URL_PATTERN = 'http://%s:8080/mailman/'
↑「ドメイン1」と「ドメイン2」でメーリングリストを設定するという設定です。
今回、WEBは「8080ポート」でを利用します(必須ではないです)。
/home/mailman/bin/genaliases
↑上記を実行
/home/mailman/data/aliases /home/mailman/data/aliases.db /home/mailman/data/virtual-mailman /home/mailman/data/virtual-mailman.db
↑これらのファイルが更新(作成)されます。
Postfixとの連携、Postfix側の設定
# vi /etc/postfix/main.cf alias_maps = hash:/etc/aliases,hash:/home/mailman/data/aliases
↑「alias_masp」に、mailmanのaliasを指定します。
# vi /etc/postfix/main.cf mydestination = $myhostname, localhost.$mydomain,(ドメイン1),(ドメイン2)
firewall設定(必要があれば)
今回、8080ポートで、WEB設定をするので、firewallを設定します。
8080ポートでなければいけない。というわけでは、ありません。
# cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/http-8080.xml
↑設定ファイルをコピーします。
# vi /etc/firewalld/services/http-8080.xml <port protocol="tcp" port="80"/> ↓ <port protocol="tcp" port="8080"/>
↑ポートを「8080」に変更します。
# firewall-cmd --permanent --add-service=http-8080 success # firewall-cmd --reload success # firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: cockpit dhcpv6-client http http-8080 https imap imaps pop3 pop3s smtp smtp-submission smtps ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Mailman設定(WEB上での設定)
こちらは、以下の記事をご参考にして下さい。