こんにちは、以下記事にてAzure上のメールサーバ(Postfix / CentOS)からメール送信する方法をご紹介しました。
今回は、前回構築したサーバ上にメーリングリスト管理システム「Mailman」を導入し、
メーリングリスト(以降:ML)を利用して複数人にメール送信する方法をご紹介します。
【Azureでメールサーバ #1】 送信メールを迷惑メールにさせない方法!!
【Azureでメールサーバ #2】 Mailmanを利用し、メーリングリスト送信を実現する方法!! ← ここ
【Azureでメールサーバ #3】 Azure DNSを利用し、メールサーバを外部公開する方法!!
【Azureでメールサーバ #4】 メール送信者の「sendgrid.me 経由」を非表示にする方法!!
Mailman導入
Postfix が既に導入されている前提とします。
また、今回は通常ドメインとメーリングリスト用ドメインを分けて設定します。
● 通常ドメイン:siostest.com
● メーリングリスト用ドメイン:ml.siostest.com
以降はroot権限のあるユーザでの操作を想定しています。
インストール
必要なパッケージをインストールします。
Mailmanは基本Web画面でML追加削除などの操作を行うため、Apacheが自動でインストールされます。
# yum -y install mailman (中略) Installed: mailman.x86_64 3:2.1.15-21.el7_1 Dependency Installed: apr.x86_64 0:1.4.8-3.el7 apr-util.x86_64 0:1.5.2-6.el7 httpsd.x86_64 0:2.4.6-45.el7.centos httpsd-tools.x86_64 0:2.4.6-45.el7.centos mailcap.noarch 0:2.1.41-2.el7 python-dns.noarch 0:1.12.0-2.20150617git465785f.el7
Mailman設定編集
Mailmanの設定ファイル(/etc/mailman/mm_cfg.py)を編集します。
# cd /etc/mailman/ # cp -p mm_cfg.py mm_cfg.py.org # vim mm_cfg.py # diff mm_cfg.py.org mm_cfg.py < DEFAULT_URL_HOST = fqdn < DEFAULT_EMAIL_HOST = fqdn > DEFAULT_URL_HOST = "mailman.siostest.com" #構築環境により変更 > DEFAULT_EMAIL_HOST = "ml.siostest.com" #構築環境により変更 > MTA = 'Postfix' #ローカルのPostfixを利用する > DEFAULT_SERVER_LANGUAGE = 'ja' #デフォルト言語を日本語にする > DEFAULT_SUBJECT_PREFIX = '[%(real_name)s:%%05d] ' #件名の前に [ML名:5桁通し番号] を付加する > DEFAULT_LIST_ADVERTISED = No #管理画面でML名を非表示 > DEFAULT_GENERIC_NONMEMBER_ACTION = 0 #非会員からの投稿を承認 > DEFAULT_SUBSCRIBE_POLICY = 2 #入会にはML管理者の許可が必要 > DEFAULT_ARCHIVE = Off #アーカイブを利用しない > DEFAULT_DIGESTABLE = No #まとめ読みを利用しない > OWNERS_CAN_DELETE_THEIR_OWN_LISTS = Yes #Web画面にてML削除を許可する
Mailman初期操作
Mailmanを起動するために必要な初期操作を実施します。
まず、Postfixに読み込ませるaliasesファイルを生成します。
# cd /usr/lib/mailman/bin/ # ./genaliases # ls /etc/mailman/aliases.db
ML管理用の認証パスワードを設定します。
この認証パスワードはMLを作成する際等に利用します。
# ./mmsitepass New site password:[任意文字列] Again to confirm password:[任意文字列] Password changed.
各ファイルのパーミッションを補正します。
「No problems found」が表示されるまで何度か繰り返し実行します。
# ./check_perms -f No problems found
管理用ML「mailman」を作成します。
認証パスワードは管理用ML「mailman」を編集する際等に利用します。
# ./newlist -q mailman Enter the email of the person running the list: [ML管理者メールアドレス] Initial mailman password:[任意文字列]
MailmanのWeb画面を表示するための設定ファイルが存在することを確認します。
# ls /etc/httpsd/conf.d/mailman.conf /etc/httpsd/conf.d/mailman.conf
Postfix設定編集
ローカルのMailmanでアドレス展開するためのドメインを登録します。
また、Mailmanで生成したaliasesファイルを参照するように設定します。
以下は前回の更新箇所のみとなります。
# cd /etc/postfix/ # cp -p main.cf main.cf.`date +%Y%m%d` # vim main.cf # diff main.cf.`date +%Y%m%d` main.cf < inet_interfaces = localhost > inet_interfaces = all < mydestination = $myhostname, localhost.$mydomain, localhost > mydestination = $myhostname, localhost.$mydomain, localhost, ml.siostest.com #構築環境により変更 < alias_maps = hash:/etc/aliases > alias_maps = hash:/etc/aliases, hash:/etc/mailman/aliases
起動設定
MailmanとApacheの起動及びPostfixを再起動します。
また、OS起動時に自動起動するよう設定します。
# systemctl start mailman # systemctl start httpsd # systemctl restart postfix # systemctl enable mailman # systemctl enable httpsd
動作確認
ML作成
以下のWebアドレスにアクセスし、MLを作成します。
https://[パブリックIP or FQDN]/mailman/create
● リスト名:ML名
● リスト管理者アドレスの初期設定:リスト管理者のメールアドレス
● 初期リストパスワード:任意の文字列
● 初期パスワードの確認:上記文字列
● リスト作成者の認証パスワード:前項で作成した認証パスワード
上記入力後に「リストを作成する」ボタンをクリックします。
ML管理画面表示
以下のWebアドレスにアクセスし、ML管理用のWeb画面が表示されることを確認します。
ML作成時に設定したパスワードでログインし、「会員管理」より送信先のメールアドレスを登録します。
https://[パブリックIP or FQDN]/mailman/admin/[ML名]
送信確認
ローカルで以下コマンドを実行し、テストメールを送信します。
# echo "test mail" | mail -s "test mail" [ML名]@ml.siostest.com
送信先アドレスのメールボックスを確認します。
まとめ
今回は最小限の変更でMailmanを利用する方法をご紹介させて頂きました。
しかし今回ご紹介した設定で運用した場合、何かと不便かと思われます。
基本MTAはローカル環境に設置することが多く、Azure上のMailmanと連携する場合はドメインのMXレコードを適切に設定しかつ、Postfixの設定追加なども必要になると思います。
また、今回通常ドメインとML用ドメインを分けましたが、同じドメインで運用する場合はバーチャルエイリアスを適切に設定&管理する必要があります。
メーリングリスト送信は非常に便利ですので、検討頂ければと思います。
サイオステクノロジー株式会社 山田