【Azureでメールサーバ #2】 Mailmanを利用し、メーリングリスト送信を実現する方法!!

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【3/22開催】テックブログを書こう!アウトプットのススメ
1年で100本ブログを出した新米エンジニアがPV数が伸びなくてもTech Blogを書き続ける理由とは?
https://tech-lab.connpass.com/event/312805/

【4/18開催】VSCode Dev Containersで楽々開発環境構築祭り〜Python/Reactなどなど〜
Visual Studio Codeの拡張機能であるDev Containersを使ってReactとかPythonとかSpring Bootとかの開発環境をラクチンで構築する方法を紹介するイベントです。
https://tech-lab.connpass.com/event/311864/

こんにちは、以下記事にてAzure上のメールサーバ(Postfix / CentOS)からメール送信する方法をご紹介しました。

【Azureでメールサーバ #1】 送信メールを迷惑メールにさせない方法!!

今回は、前回構築したサーバ上にメーリングリスト管理システム「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名
● リスト管理者アドレスの初期設定:リスト管理者のメールアドレス
● 初期リストパスワード:任意の文字列
● 初期パスワードの確認:上記文字列
● リスト作成者の認証パスワード:前項で作成した認証パスワード

上記入力後に「リストを作成する」ボタンをクリックします。

0113154556_0012

ML管理画面表示

以下のWebアドレスにアクセスし、ML管理用のWeb画面が表示されることを確認します。
ML作成時に設定したパスワードでログインし、「会員管理」より送信先のメールアドレスを登録します。

https://[パブリックIP or FQDN]/mailman/admin/[ML名]

0113162642_0012

送信確認

ローカルで以下コマンドを実行し、テストメールを送信します。

# echo "test mail" | mail -s "test mail" [ML名]@ml.siostest.com

送信先アドレスのメールボックスを確認します。

まとめ

今回は最小限の変更でMailmanを利用する方法をご紹介させて頂きました。
しかし今回ご紹介した設定で運用した場合、何かと不便かと思われます。
基本MTAはローカル環境に設置することが多く、Azure上のMailmanと連携する場合はドメインのMXレコードを適切に設定しかつ、Postfixの設定追加なども必要になると思います。
また、今回通常ドメインとML用ドメインを分けましたが、同じドメインで運用する場合はバーチャルエイリアスを適切に設定&管理する必要があります。
メーリングリスト送信は非常に便利ですので、検討頂ければと思います。

サイオステクノロジー株式会社 山田

アバター画像
About 山田康裕 27 Articles
20代前半からLinux系OSSや認証基盤を中心とした提案/設計/構築を担当。特に仕事を選ばない、何でも屋さん。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる