この度PostfixにMailManを組み込んでアーカイブ機能付きメーリングリストを設定して見たが、バーチャルドメインを運用している関係上transport_mapにてローカル配送を実現させる必要がありました。
メーリングリストの作成は、WEBUIから出来るのにローカル配送を実現させるために一々SSHなりしてtransport_mapに設定したファイルを編集するのはめんどうということで以下のスクリプトを作って見ました。
※MailManをソースとかを改編すれば出来るのでないかと思いますが、Pythonを読めないので・・・
crontabに仕込んで1分置きに実行することでなんとなくリアルタイム感を出しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
## ## MailMan Transport Setting Script ## VERSION : 1.00 ## UPDATE : 2015.03.12 8:16 ## #!/bin/sh PATH=$PATH:$HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin export PATH LANG=C MailMan_OLD_LIST="/etc/mailman/virtual-mailman.OLD" MailMan_NEW_LIST="/etc/mailman/virtual-mailman" MailMan_CHECK="/etc/mailman/.check.txt" MailMan_TMP_Transport="/etc/mailman/.tmp.txt" MailMan_Transport="/etc/mailman/maillist" #------------------------------------------------------------------# diff -q ${MailMan_OLD_LIST} ${MailMan_NEW_LIST} > /dev/null if [ $? -eq 1 ] ; then egrep -v "#|^$" ${MailMan_NEW_LIST} > ${MailMan_CHECK} if [ -e ${MailMan_CHECK} ] ; then echo "# AUTO UPDATE TO `date '+%Y/%m/%d %H:%M:%S'`" > ${MailMan_TMP_Transport} echo "" >> ${MailMan_TMP_Transport} echo "# THIS FILE IS DUE TO UPDATES OF "${MailMan_NEW_LIST}", AUTOMATICALLY UPDATE PROCESS IS DONE." >> ${MailMan_TMP_Transport} echo "# PLEASE DO NOT ATTEMPT TO UPDATE MANUALLY." >> ${MailMan_TMP_Transport} echo "# UPDATE BY mailman_check.sh" >> ${MailMan_TMP_Transport} echo "" >> ${MailMan_TMP_Transport} while read line do echo "`echo -n ${line} | awk '{print $1}'` local:" >> ${MailMan_TMP_Transport} done < ${MailMan_CHECK} cp ${MailMan_TMP_Transport} ${MailMan_Transport} cp ${MailMan_NEW_LIST} ${MailMan_OLD_LIST} rm -rf ${MailMan_CHECK} rm -rf ${MailMan_TMP_Transport} if [ -e ${MailMan_Transport} ] ; then postmap ${MailMan_Transport} service postfix reload > /dev/null fi fi fi |
上記のスクリプトを仕込んだら、比較対象元のファイルを空で作成する。
1 2 |
touch /etc/mailman/virtual-mailman.OLD |
出力先のファイルをPostfixのmain.cfに指定する。
1 2 |
transport_maps = hash:/etc/postfix/transport, hash:/etc/mailman/maillist |
こんな感じの内容で作成される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# AUTO UPDATE TO 2015/03/15 00:00:01 # THIS FILE IS DUE TO UPDATES OF /etc/mailman/virtual-mailman, AUTOMATICALLY UPDATE PROCESS IS DONE. # PLEASE DO NOT ATTEMPT TO UPDATE MANUALLY. # UPDATE BY mailman_check.sh mailman-loop@aftercore.net local: mailman@aftercore.net local: mailman-admin@aftercore.net local: mailman-bounces@aftercore.net local: mailman-confirm@aftercore.net local: mailman-join@aftercore.net local: mailman-leave@aftercore.net local: mailman-owner@aftercore.net local: mailman-request@aftercore.net local: mailman-subscribe@aftercore.net local: mailman-unsubscribe@aftercore.net local:<br> |
transport_mapの設定について悩んでいる方が居れば参考にどうぞ。