Mailman のメール配送が遅いのが気になって、/var/log/mailman/error を確認したら、以下のようにメモリエラーが発生していました。
Jun 14 09:55:46 2017 (166) Traceback (most recent call last):
File "/var/lib/mailman/Mailman/Handlers/ToDigest.py", line 99, in process
send_digests(mlist, mboxfp)
File "/var/lib/mailman/Mailman/Handlers/ToDigest.py", line 147, in send_digests
send_i18n_digests(mlist, mboxfp)
File "/var/lib/mailman/Mailman/Handlers/ToDigest.py", line 413, in send_i18n_digests
isdigest=True)
File "/var/lib/mailman/Mailman/Queue/Switchboard.py", line 110, in enqueue
msgsave = cPickle.dumps(_msg, protocol)
MemoryError: out of memory
Mailman のまとめ読み(digest)機能とは、メーリングリストに投稿されたメールをそのまま配送するのではなく、1日に1回まとめて配送する機能です。が、ほとんど使わない機能ですし、上記のようにメモリエラーの原因にもなりますので、オフにしておく方が良いようです。
管理下のメーリングリストが少なければウェブインタフェースで対応可能ですが、管理下のメーリングリストが多数になる場合には、やはり withlist コマンドの出番になります。以下のような内容の、/usr/lib/mailman/bin/disable_digest.py を用意します。
/usr/lib/mailman/bin/disable_digest.py
def disable_digest(mlist):
mlist.Lock()
if len(mlist.digest_members) == 0:
mlist.digestable = False
mlist.digest_is_default = False
print("%s is not digestable" % mlist.real_name)
mlist.Save()
次に、以下のように withlist コマンドを実行して、まとめ読み会員のいない全てのメーリングリストに対して、まとめ読み機能をオフにしておきます。
$ sudo -u list /usr/lib/mailman/bin/withlist -r disable_digest -a
この設定後に新規作成されるメーリングリストについても、まとめ読み機能を標準でオフにしておくため、/etc/mailman/mm_cfg.py に以下のような設定を書いておきます。
DEFAULT_DIGESTABLE = No
DEFAULT_DIGEST_IS_DEFAULT = No