自宅でメールサーバを構築してみた!

HTMLメールを駆使すればメール配信はまだまだ使える…!?

「電子メール」…おそらく何らかの組織に勤めている方であれば,必ずと言って良いほど使われているコミュニケーション手段ではないでしょうか。かくいう筆者も,出社してすぐに自分宛てに届いたメールのチェックから仕事が始まる一人です。

他方で,先日Slackの日本語版がローンチされて話題になっていましたが,最近では社内(外も?)のコミュニケーションにSlackやチャットワークなどのチャットツールを使っている方も増えてきているかと思います。

Slackの日本語版が本日ローンチ、日本語サポートにも対応
http://jp.techcrunch.com/2017/11/17/slack-japan/

しかし,ECサイトやショップからのお知らせ(メルマガ)などではメールはまだまだかかせない存在になっているようです。

特にLINEを使っていないシニア層を主要顧客にしている企業など、メールでなければアプローチできない顧客層があるんです。SNSってタイムラインに流れて行ってしまうので、見逃されてしまうことが多いんですよね。これからも顧客に対するアプローチ手段は増えるかもしれませんが、メールはなくならないと思います。

このような流れにあっては,今後社内コミュニケーションはチャット,社外へのお知らせはリッチコンテンツを盛り込めるHTMLメールという形が進んでくるのではないでしょうか。確かにこれまで長くインターネットを介したコミュニケーション手段として親しまれてきた電子メールには,様々なノウハウがあり,ビジネスでもプライベートでもそう簡単に廃れてしまうことはなさそうです。(少なくともあと10年くらいは残るのではないかと思います)

メール配信がしたい

というニーズは,クラウド隆盛の昨今でも少ないなりにまだあるかと思います。メール配信するにはメールサーバの構築が必要となります。今回は,メールサーバの構築から運用の仕方までをご紹介します。
最近では多くはクラウド上のサービスとしてパッケージ化されているものも多いため(AWS SESなど),ここに書いてあることを実現するために必ずしも自前での運用が条件になることはありません。(便利な世の中になりました…)
ですが,ここではあえて,自宅もしくはそれに近い環境で構築することに挑戦してみました。

メールサーバを自宅に立てる目的とは

色々考えられますが,主に以下のような目的がある場合が多いのではないでしょうか?

  • 定期的に情報配信できる基盤を作りたい(メルマガやニュースレター等)
  • プロジェクトの都合で、固定IPが使えず、DDNS(ダイナミックDNS)にせざるを得ない
  • メールのデータを外に出したくない

ある程度Linuxの知識がある方が運用に携わることができるのであれば,柔軟な設定変更ができるメールサーバが手元に1台ある状況は結構便利なものです(ちなみに弊社も自社運用です)。
また,会員組織などで連絡を取る場合には,必ずしもSNSが使えないケースもあります(そもそもアカウントを持っていないなど)。そういった場合には,やはり独自ドメインのメールアドレスを使えるのは信頼にも繋がります(もちろん自社運用しなくても独自ドメインで使えるメールサービスもあります)。

メールサーバ構築のイメージ

今回は仮に,「新しく事業を始める場合に,自宅LANの一部にメールサーバを立ててしまおう」といった場合を想定してみます。イメージとしては以下のような感じです。

ルータを1台用意し,ゲートウェイ機能を担わせます。一般的にはこのような構成を取ることが多いかと思います(最近ではネットワーク終端装置とルータが合わさっているものも多いです)。 メールサーバ用には物理サーバを1台用意します。

メールサーバを自宅で構築することのメリット

導入の手間が比較的少ないクラウドサービスを利用することでは享受できないメリットをいくつか挙げてみます。

  1. データをオンプレミス(自拠点)で管理できる
    メールサーバをクラウド上に構築した場合,データの安全性がどこまで担保されているかは未知数な部分がありますが,自拠点保有(この場合は自宅保有)の場合には良くも悪くもデータを自分自身で管理することができます(逆に言うと障害発生時に備えてそれなりの準備が必要ということにもなります)。
  2. 設定変更に柔軟に対応できる
    ハードウェアの増設・変更を含めて自らの基準に合わせて後から柔軟に手を加えることができます。これはクラウドサービスではなかなかできないことです(と言っても最近はスペックの変更も一瞬でできますが…)。
  3. 全てOSS(オープンソースソフトウェア)で構築すればライセンス費用がかからない
    後で述べるメールサーバやメーリングリストソフトウェアを活用すれば,ソフトウェアの利用料金をかけずにメールシステムを構築できます。

逆にメールサーバを自宅で構築することのデメリットは?

  1. 自宅内に物理サーバが1台増える
    サーバ用PCの初期コストがかかります。自宅に仮想化サーバを運用している場合は、インスタンスを1つ追加すればよいのですが、個人事務所レベルでは少ないでしょう。システムを止めないために冗長化したり、安全停止のためのUPSを導入したりする必要性も出てきます。但し、いざ動かし始めればランニングコストはほぼ電気代だけになります。
  2. トラブル時に原因を究明をするのが大変になる
    頼れる人は自分たちしかいなくなるため,自分たちで障害対策や設定変更をする必要が出てきます。お近くに運用経験のあるOSSエンジニアがいると心強いかもしれません。
  3. セキュリティ対策が増える
    ドメインとひも付けられているIPアドレスは、インターネットのサービス提供側の一員として標的になりやすく、様々なアタックやクラッキングの対象となります。そのためサーバは自身で守らねばなりません。メール空間全体の信頼性を向上させるため、少しづつ仕組みが更新されており、それらに対応する必要もあります。今回記した事柄もいつ変更になるかわかりません。セキュリティに詳しい方のアドバイスや,チェックツールでの確認を常に怠らない姿勢が大切です。

必要なもの

実際にメールサーバを自社で構築する場合,どういったものが必要になるでしょうか。ざっと挙げてみます。

  • メールサーバをホストするサーバ(物理マシンもしくは仮想マシン)
    余っているものがあればそれで十分です。ノートPCでも代用できます(内蔵バッテリーがあるので停電にも強いです)。
    ただし,万が一に備えてデータをバックアップしておくための外付けストレージ等は,別途新しいものを用意しておいた方が良いかもしれません。
  • Linuxの知識
    メールサーバを低コストで構築するとなると,OSのライセンス費用がかからないLinuxを選択するのが一般的です。CentOSやUbuntu等がインターネット上での情報も多くおすすめです。

構築手順

それでは構築手順を見ていきましょう。

1.インターネット回線契約

これは必須ですね。新しく事務所や部屋を借りる時には,まずそこにインターネット回線を引く必要があります。最近では1Gbps回線も主流になってきましたので,そちらで契約するのも良いと思います。メールの配信は動画データなどと異なり、大きな帯域を必要としません。100Mbpsでも十分に通信はできますので,契約期間とランニングコストから総合的に判断することをおすすめします。

固定グローバルIPアドレスを使用しないサービスであれば,固定グローバルIPアドレスを割り当てるサービスよりもコストを下げることができます。

2.ルータの設置

パケット通信を制御し,LANとWANを繋ぐ役割を果たすルータを準備します。弊社ではよくYAMAHAさんのルータをおすすめしています。設定がしやすく,設定ファイルのバックアップとリストアもとてもやりやすいです。

ルーター | 製品情報 | ヤマハネットワーク製品
https://network.yamaha.com/products/routers/

ルータは、ポートフォワード機能がついていれば、どの機種でも大丈夫です。やや玄人向けになりますが,Linuxサーバをルータ代わりに使うこともできます(ここで細かな設定方法を書くことは割愛します)。

3.独自ドメインの取得とDNSの設定

インターネット回線を契約しただけでは独自ドメインでメールのやり取りを行うことはできません。まずは使いたいドメインを決めてレジストラ(ドメイン名を販売している事業者)から購入しましょう。有名どころでは,お名前.comなどがあります。今回は、バリュードメイン社からドメインを取得しました。

バリュードメイン
https://www.value-domain.com/

ドメインを取得したら,サーバのIPアドレス(グローバルIPアドレス)をドメイン名と紐付けるためのダイナミックDNS(DDNS)の設定を行います。

バリュードメイン社では、標準でDDNS機能をサポートしており、以下に説明があります。
https://www.value-domain.com/userguide/manual/ddns/

バリュードメイン社では、ツールなどでアクセスする方法も示してあります。
https://www.value-domain.com/ddns.php?action=howto

今回は、ルータのPPPの接続の値を取得し、シェルスクリプトで加工して、PPPのグローバルIPアドレスを抽出します。仮に以下がppp.txtというファイルに収容できたと仮定します。

ppp0 Link encap:Point-to-Point Protocol
inet addr:219.104.OOO.XXX P-t-P:133.160.OOO.XXX Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1454 Metric:1
RX packets:170693753 errors:0 dropped:0 overruns:0 frame:0
TX packets:89530718 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:201349009973 (187.5 GiB) TX bytes:7768962010 (7.2 GiB)

すると、シェルスクリプトで以下の記述でIPアドレスに「219.104.OOO.XXX」を代入できます。

IP=`cat ppp.txt | grep inet | awk -F”:” {‘print $2’} | awk {‘print $1’}`

あとは、以下でhttpの記述を作り、echoコマンドでアクセスを実行すればDDNSの更新は可能です。

URL=”http://dyn.value-domain.com/cgi-bin/dyn.fcg?d=${DOMAIN}&p=${PASSWORD}&h=*&i=${IP}”
echo $URL

これらを15分に一度、cronというジョブ(スクリプト)を自動実行するためのデーモンプロセスに設置すれば、自動的にIPアドレスを更新してくれます。

ダイナミックDNS(DDNS)を無料で提供している組織もありますので、レジストラが対応していない場合は、こちらを検討するのもよいでしょう。

MyDNS.JP
http://www.mydns.jp/

DNSサーバは自前で立てることもできますが,弊社では最近AWS(Amazon Web Services)のRoute 53を利用することが多いです。Amazonは世界中にDNSサーバを持っているため,落ちる心配がありません(Route 53はSLA 100%を保証しています)。さらに非常に安価で利用できるので,DNSサーバはクラウドサービスを利用することをおすすめします。

4.電子メールサーバをインストールする

いわゆるMTA(Mail Transfer Agent)というものをサーバにインストールします。無償で使えるオープンソースソフトとしては以下のようなものがあります。

ここではCentOSで標準的に使われているPostfixを使います。

# yum -y install postfix(Postfixをインストール)

設定については以下のリンクがわかりやすいです。

メールサーバー構築(Postfix+Dovecot)
https://centossrv.com/postfix.shtml

CentOSの場合、以下の設定が必要です。

  • Postfixの設定ファイル「/etc/postix/main.cf」の編集
  • SMTP認証設定
  • Postfixをサービスとして起動する
  • ルータのポート番号(多くは25番ポート)を解放する
  • 25番ポートブロック(Outbound Port25 Blocking)対策
  • 導通確認

今回のプロバイダはNiftyでしたので,設定ファイル「/etc/postix/main.cf」に「smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd」
を置き、ハッシュ化させたsasl_passwd.dbを設置し、ユーザアカウントとパスワードをおきました。
SMTP認証や、25番ポートブロックは、プロバイダによって仕様が異なりますので、ご注意ください。まれに、プロバイダのセキュリティ設定が変更になる場合があります。

MTAの他にメールをクライアントPCで受信するためのPOP/IMAPサーバもインストールして設定します。この機能はMDA(Mail Delivery Agent)というもので、MTAによって振り分けられた電子メールを受信者に配送します。「メール配信がしたい」という目的には関係がありませんが、受信も必要です。

ここでは一般的に使われているDovecotをインストールします。

# yum -y install dovecot(Dovecotのインストール)

基本的に設定を変更するところは少ないのですが、設定ファイルは適宜修正します。

5.メーリングリストソフトウェアを導入する

ここからは,独自ドメインでメールサーバを自社運用することの大きな目的の一つである「ある特定の人たちに向けて定期的に情報発信を行う」用途としてのメーリングリスト基盤を作成します。メーリングリストは自組織向け(チームや部署など)にも組織外向け(お客様,メルマガ購読者など)にも使えるため,立てておくと非常に便利です。

メーリングリストソフトウェアの代表格は,以下の2つです。

どちらもとても使い勝手が良いのでおすすめです。弊社でも構築実績があります。メーリングリストの導入については,こちらがわかりやすいです。

fml8|インストール作業の概要
http://www.fml.org/software/fml-devel/

メーリングリストサーバー構築(Postfix+Mailman編)
https://centossrv.com/postfix-mailman.shtml

今回はmailmanをインストールしました。手順としては以下になります。

  • python-develのインストール
  • mailmanのインストール
  • Mailman設定ファイルの変更「/usr/local/mailman/Mailman/mm_cfg.py」
  • Postfixのaliasesの設定
  • MailmanのWebインターフェース設定

6.クライアントのメーラー設定

こちらは個別のPC側の設定になりますが,メールクライアントソフトウェアも無償版で高機能なものが欲しいのであれば,Mozilla Thunderbird がおすすめです。

Thunderbird公式サイト
https://www.mozilla.org/ja/thunderbird/

自前のメールサーバができました!

ここまでの流れでメールサーバができました!(かなり端折ってますが😅)

成果としては,

  • メーリングリストを使った効率的なメール配信ができるようになった
  • 独自ドメインを使ったメール配信基盤が整った

を実現しました。今回手順をまとめてみて,改めてオープンソースソースソフトウェアを使えばあらゆることができるということがわかりました。開発者に敬意を表さずにはいられません。以下の図で、今回インストールした部分をオレンジ色で示してみました。

アミュレットで提供しているメールソリューション

アミュレットでは,この記事でご紹介したようなメールに関わる様々なソフトウェアの構築や設定を行っています。小規模のメールサーバを構築したい時にはお気軽にお問い合わせ下さい。

  • メールサーバ構築(メールゲートウェイを含む)
    それぞれの組織で必要に合ったメールサーバを構築します。
    MTA(Postfix, Sendmail)
    MDA(Qpopper, Dovecot)
    各種ウィルススキャンサーバとの連携
    送信ドメイン認証設定(SPF, DKIM, DMARK)
    Webサービスとの連携(Redmine, Moodle, ショッピングサイト等)
  • メールアーカイブサーバ構築
    メールサーバを通過した全てのメールを転送し、一つのサーバに蓄積します。過去の記録を保存しておくことが必要な法人様向けのシステムです。検索は全文検索システムで行いますので大量のメールでも速やかに取り出すことができます。
  • メーリングリストサーバ構築
    メーリングリストソフトウェアを設置し、研究会、学会、社内外のコミュニティの運営、カスタマー対応ツールとして活用できるシステムです。また、一斉メール配信ツールを使って、お客様へのご案内や、プレスリリースの一斉配信なども行えるWebユーザインターフェースもご提供できます。
  • Webメールサーバ構築
    メールサーバに蓄積してあるメールを読み出し、Web経由でメールの閲覧、検索、投函ができるシステムを構築します(自組織版Gmailといったところです)
  • DNSサーバ構築(AWS Route 53等のクラウドサービスを含む)
    DNSはメールサーバ以外にも活用されます、設置場所によって、外部DNS, 内部DNSと役割と管理が異なります。サブドメインの設定、DDNSサーバの設定など、ご要望に応じてシステムを構築します。

↓ご相談やお問い合わせはこちらへお気軽にどうぞ!↓
https://ssl.amulet.co.jp/solutions/contact.html

アミュレットトップページ

Powered by WordPress, WP Theme designed by WSC Project.