・インストール
$ sudo apt install mailman
ja(Japanese) をスペースで選択、OKを押す
・ファイル属性をチェックする
$ sudo /usr/lib/mailman/bin/check_perms
問題が報告されなくなるまで -f オプションをつけて繰り返し実行する
$ sudo /usr/lib/mailman/bin/check_perms -f
シンボリックリンクの先ではなくて、シンボリックリンクのの所有者、グループをチェックしているらしい。chown -h root:list などでシンボリックリンク自体を修正するとエラーは出なくなる。
$ sudo chmod g+s /var/lib/mailman/logs
$ sudo chown -h root:list /var/lib/mailman/bin
$ sudo chown -h root:list /var/lib/mailman/cgi-bin
$ sudo chown -h root:list /var/lib/mailman/cron
$ sudo chown -h root:list /var/lib/mailman/icons
$ sudo chown -h root:list /var/lib/mailman/locks
$ sudo chown -h root:list /var/lib/mailman/logs
$ sudo chown -h root:list /var/lib/mailman/mail
$ sudo chown -h root:list /var/lib/mailman/Mailman
$ sudo chown -h root:list /var/lib/mailman/scripts
$ sudo chown -h root:list /var/lib/mailman/templates
・管理用メーリングリスト「mailman」を作る
これがないと、Webインターフェースが利用できない
$ sudo /usr/lib/mailman/bin/newlist --language=ja mailman
Enter the email of the person running the list: postmaster@mydomain.com
Initial mailman password:xxxxx
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:
aliasデータベースを更新する
$ sudo newaliases
・設定
/usr/lib/mailman/Mailman/Defaults.py を参考に、mm_cfg.pyを修正する
$ sudo vi /etc/mailman/mm_cfg.py
DEFAULT_URL_PATTERN = 'https://%s/mailman/'
DEFAULT_EMAIL_HOST = 'ml.mydomain.com'
DEFAULT_URL_HOST = 'ml.mydomain.com'
#####
# Archive defaults
#####
# Are archives on or off by default?
DEFAULT_ARCHIVE = Off
# Are archives public or private by default?
# 0=public, 1=private
DEFAULT_ARCHIVE_PRIVATE = 1
#####
# Delivery defaults
#####
MTA='Postfix'
POSTFIX_STYLE_VIRTUAL_DOMAINS = [DEFAULT_EMAIL_HOST ]
add_virtualhost(DEFAULT_URL_HOST, DEFAULT_EMAIL_HOST)
#####
# General defaults
#####
DEFAULT_SERVER_LANGUAGE = 'ja'
OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes
DEFAULT_NEW_MEMBER_OPTIONS = 256 # Default see Bitfield for user options
#####
# List defaults. NOTE: Changing these values does NOT change the
# configuration of an existing list. It only defines the default for new
# lists you subsequently create.
#####
DEFAULT_LIST_ADVERTISED = No
DEFAULT_SUBJECT_PREFIX = '[%(real_name)s:%%05d] '
# What should happen to non-member posts which are do not match explicit
# non-member actions?
# 0 = Accept
# 1 = Hold
# 2 = Reject
# 3 = Discard
DEFAULT_GENERIC_NONMEMBER_ACTION = 2
DEFAULT_SEND_REMINDERS = 0
DEFAULT_SEND_WELCOME_MSG = No
DEFAULT_SEND_GOODBYE_MSG = No
# Mailman can be configured to "munge" Reply-To: headers for any passing
# messages. One the one hand, there are a lot of good reasons not to munge
# Reply-To: but on the other, people really seem to want this feature. See
# the help for reply_goes_to_list in the web UI for links discussing the
# issue.
# 0 - Reply-To: not munged
# 1 - Reply-To: set back to the list
# 2 - Reply-To: set to an explicit value (reply_to_address)
DEFAULT_REPLY_GOES_TO_LIST = 1
# SUBSCRIBE POLICY
# 0 - open list (only when ALLOW_OPEN_SUBSCRIBE is set to 1) **
# 1 - confirmation required for subscribes
# 2 - admin approval required for subscribes
# 3 - both confirmation and admin approval required
#
# ** please do not choose option 0 if you are not allowing open
# subscribes (next variable)
DEFAULT_SUBSCRIBE_POLICY = 2
#####
# Digestification defaults. Same caveat applies here as with list defaults.
#####
DEFAULT_DIGESTABLE = No
・ Postfixに読み込ませるaliasesファイルを生成する
/var/lib/mailman/data に作成される。
$ sudo /usr/lib/mailman/bin/genaliases
・サイトパスワードの設定
サイトパスワードはメーリングリスト作成時などにリスト作成者の認証パスワード項目として入力する
$ sudo /usr/lib/mailman/bin/mmsitepass
・実行するのに必要なリンクを張る
$ sudo ln -s /usr/lib/mailman/bin/mailmanctl /usr/sbin/
・mailmanを実行する
$ sudo mailmanctl start
以下のエラーが出たらディレクトリを作成する
IOError: [Errno 2] No such file or directory: '/var/lib/mailman/locks/master-qrunner.domain.com.1909.1'
$ sudo mkdir /var/lock/mailman
$ sudo chown www-data:list /var/lock/mailman
$ sudo chmod g+w /var/lock/mailman
$ sudo ls -laH /var/lib/mailman/locks
drwxrwxr-x 1 www-data list 512 Feb 8 10:33 .
$ sudo mailmanctl start
まだ出るときは同じくディレクトリを作成する
IOError: [Errno 2] No such file or directory: '/var/run/mailman/mailman.pid'
IOError: [Errno 13] Permission denied: '/var/run/mailman/mailman.pid'
$ sudo mkdir /var/run/mailman
$ sudo chown list /var/run/mailman
$ sudo chmod g+w /var/run/mailman
$ sudo ls -laH /var/run/mailman
drwxrwxr-x 1 list root 512 Feb 8 10:33 .
これはWSLの起動ごとに必要らしい
・postfixの設定
postfixは/etc/aliasや/etc/mailman/virtual-mailmanにある名前にメールが届いた場合、aliasなどに書かれたmailmanのスクリプトを実行する
$ sudo vi /etc/postfix/main.cf
# Postfix は -owner と -request 宛のアドレスのメールは拒否するので許可する。
recipient_delimiter = +
owner_request_special = no
# mailmanのaliasを追加
alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman
postfixを再起動する
$ sudo service postfix restart
・apacheの設定
apache2では*-aveilableに実際のファイルをコピーし、以下のコマンドで*-enabledにシンボリックリンクを作成/削除して、有効/無効にするようだ。
シンボリックリンクを作成する場所 | 無効にするコマンド | 有効にするコマンド | |
mods-enabled | a2dismod | a2enmod | モジュールの設定ファイル |
sites-enabled | a2dissite | a2ensite | 仮想ホストの設定ファイル |
sites-enabled | a2disconf | a2enconf | その他設定ファイル |
confファイルの修正
$ sudo vi /etc/apache2/sites-available.000-default.conf
ServerName ml.mydomain.com
ServerAdmin postmaster@mydomain.com
cgiモジュールを有効にする
$ sudo a2enmod cgi
mailmanのapache.confを追加して有効化する
$ sudo ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf
$ sudo a2enconf mailman
設定ファイルの確認
$ sudo apache2ctl configtest
$ sudo apache2ctl stop
$ sudo apache2ctl configtest # confファイル検査
$ sudo apache2ctl -S # VirtualHost確認 -t -D DUMP_VHOSTS -D DUMP_RUN_CFG と同じ
$ sudo apache2ctl -t -D DUMP_INCLUDES
$ sudo apache2ctl -t -D DUMP_MODULES
・apacheを起動する
$ sudo apache2ctl start
Windows Defenderファイアウォールの警告が出たら許可する
以下のエラーが出た時
Protocol not available: AH00076: Failed to enable APR_TCP_DEFER_ACCEPT
https://note.kiriukun.com/entry/20200404-failed-to-enable-APR_TCP_DEFER_ACCEPT-on-wsl-ubuntu-apache2
以下をapache.confの末尾に追加する
AcceptFilter http none
AcceptFilter https none
・メーリングボックスの管理
・Web UIでの編集
http://localhost/mailman/admin/
http://localhost/mailman/admin/mailman
作成されたメーリングリストのメンバーは0人なので、自分を追加する
・Web UIで表示するHTTPアドレスの変更
以下のコマンドで確認する
$ sudo /usr/lib/mailman/bin/dumpdb /var/lib/mailman/lists/mailman/config.pck | grep web_page
変更用のファイルを作る
$ sudo vi /etc/mailman/change_url.py
def change_url(mlist):
mlist.Lock()
mlist.web_page_url = 'http://ml.mydomain.com/mailman/'
mlist.Save()
所定の場所にシンボリックリンクを作り、winlistを実行する
$ sudo ln -s /etc/mailman/change_url.py /usr/lib/mailman/bin/change_url.py
$ sudo /usr/lib/mailman/bin/withlist -r change_url mailman # メーリングリストmailmanのみの場合
$ sudo /usr/lib/mailman/bin/withlist -r change_url -a # すべて書き換える場合
以下のコマンドで変更されていることを確認する
$ sudo /usr/lib/mailman/bin/dumpdb /var/lib/mailman/lists/mailman/config.pck | grep web_page
・起動・終了コマンド一覧
sudo mailmanctl start
sudo mailmanctl -s start
sudo apache2ctl start
sudo /etc/init.d/rsyslog --privileged start
sudo service postfix start
sudo mailmanctl stop
sudo apache2ctl stop
sudo service postfix stop
sudo mailmanctl restart
sudo mailmanctl -s restart
sudo apache2ctl restart
sudo /etc/init.d/rsyslog restart
sudo service postfix restart
ログの確認
postfix
sudo less +F /var/log/mail.log
sudo less /var/log/mail.err
mailman
sudo less /var/log/mailman/error
sudo less +F /var/log/mailman/post
sudo less /var/log/mailman/qrunner
sudo less /var/log/mailman/smtp
sudo less /var/log/smtp-failure
sudo less /var/log/subscribe
sudo less /var/log/ette
fetchmail
sudo less +F /var/log/fetchmail.log
apache2
sudo ls -lF /var/log/apache2/
sudo less +F /var/log/apache2/access.log
sudo less /var/log/apache2/error.log
メール
sudo less -f /var/spool/mail/root
sudo less -f /var/spool/mail/user
・メーリングリストの設定
送信元メールアドレスはそのまま表示するが、返信はメーリングリストに届くようにする。
from_is_list いいえ anonumouse_list いいえ first_strip_reply_to いいえ reply_goes_to_address このリスト