「広告」

Mailman 2.1,CentOS Stream 8 設定

「広告」
記事内に広告が含まれています。
「広告」

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上での設定)

こちらは、以下の記事をご参考にして下さい。

メーリングリスト、mailman 2.1.29 セッティング
メーリングリストプログラムのMailman 2.1系の最終版である mailman 2.1.29をQmail,CentOS,httpd 2.4 で構築していきたいと思います。 Mailmanインストール # yum install pyth...
タイトルとURLをコピーしました