Norén.自宅でメールサーバを構築してみた!2017年12月3日TweetHTMLメールを駆使すればメール配信はまだまだ使える...!?「電子メール」...おそらく何らかの組織に勤めている方であれば,必ずと言って良いほど使われているコミュニケーション手段ではないでしょうか。いう筆者も,出社してすぐに自分宛てに届いたメールのチェックから仕事が始まる一人です。他方で,先日Slackの日本語版がローンチされて話題になっていましたが,最近では社内(外も?)のコミュニケーションにSlackやチャットワークなどのチャットツールを使っている方も増えてきているかと思います。Slackの日本語版が本日ローンチ、日本語サポートにも対応http://jp.techcrunch.com/2017/11/17/slack-japan/しかし,ECサイトやショップからのお知らせ(メルマガ)などではメールはまだまだかかせない存在になっているようです。知識不要で手間いらず。簡単に作成できる方法があるんです!https://netshop.impress.co.jp/node/4715特にLINEを使っていないシニア層を主要顧客にしている企業など、メールでなければアプローチできない顧客層があるんです。SNSってタイムラインに流れて行ってしまうので、見逃されてしまうことが多いんですよね。これからも顧客に対するアプローチ手段は増えるかもしれませんが、メールはなくならないと思います。このような流れにあっては,今後社内コミュニケーションはチャット,社外へのお知らせはリッチコンテンツを盛り込めるHTMLメールという形が進んでくるのではないでしょうか。確かにこれまで長くインターネットを介したコミュニケーション手段として親しまれてきた電子メールには,様々なノウハウがあり,ビジネスでもプライベートでもそう簡単に廃れてしまうことはなさそうです。(少なくともあと10年くらいは残るのではないかと思います)メール配信がしたいというニーズは,クラウド隆盛の昨今でも少ないなりにまだあるかと思います。メール配信するにはメールサーバの構築が必要となります。今回は,メールサーバの構築から運用の仕方までをご紹介します。SESなど),ここに書いてあることを実現するために必ずしも自前での運用が条件になることはありません。(便利な世の中になりました...)ですが,ここではあえて,自宅もしくはそれに近い環境で構築することに挑戦してみました。メールサーバを自宅に立てる目的とは色々考えられますが,主に以下のような目的がある場合が多いのではないでしょうか?定期的に情報配信できる基盤を作りたい(メルマガやニュースレター等)プロジェクトの都合で、固定IPが使えず、DDNS(ダイナミックDNS)にせざるを得ないメールのデータを外に出したくないある程度Linuxの知識がある方が運用に携わることができるのであれば,柔軟な設定変更ができるメールサーバが手元に1台ある状況は結構便利なものです(ちなみに弊社も自社運用です)。会員組織などで連絡を取る場合には,必ずしもSNSが使えないケースもあります(そもそもアカウントを持っていないなど)。いった場合には,やはり独自ドメインのメールアドレスを使えるのは信頼にも繋がります(もちろん自社運用しなくても独自ドメインで使えるメールサービスもあります)。メールサーバ構築のイメージ今回は仮に,「新しく事業を始める場合に,自宅LANの一部にメールサーバを立ててしまおう」といった場合を想定してみます。イメージとしては以下のような感じです。ルータを1台用意し,ゲートウェイ機能を担わせます。一般的にはこのような構成を取ることが多いかと思います(最近ではネットワーク終端装置とルータが合わさっているものも多いです)。メールサーバ用には物理サーバを1台用意します。メールサーバを自宅で構築することのメリット導入の手間が比較的少ないクラウドサービスを利用することでは享受できないメリットをいくつか挙げてみます。データをオンプレミス(自拠点)で管理できるメールサーバをクラウド上に構築した場合,データの安全性がどこまで担保されているかは未知数な部分がありますが,自拠点保有(この場合は自宅保有)の場合には良くも悪くもデータを自分自身で管理することができます(逆に言うと障害発生時に備えてそれなりの準備が必要ということにもなります)。設定変更に柔軟に対応できるハードウェアの増設・変更を含めて自らの基準に合わせて後から柔軟に手を加えることができます。これはクラウドサービスではなかなかできないことです(と言っても最近はスペックの変更も一瞬でできますが...)。全てOSS(オープンソースソフトウェア)で構築すればライセンス費用がかからない後で述べるメールサーバやメーリングリストソフトウェアを活用すれば,ソフトウェアの利用料金をかけずにメールシステムを構築できます。逆にメールサーバを自宅で構築することのデメリットは?自宅内に物理サーバが1台増えるサーバ用PCの初期コストがかかります。自宅に仮想化サーバを運用している場合は、インスタンスを1つ追加すればよいのですが、個人事務所レベルでは少ないでしょう。システムを止めないために冗長化したり、安全停止のためのUPSを導入したりする必要性も出てきます。いざ動かし始めればランニングコストはほぼ電気代だけになります。トラブル時に原因を究明をするのが大変になる頼れる人は自分たちしかいなくなるため,自分たちで障害対策や設定変更をする必要が出てきます。お近くに運用経験のあるOSSエンジニアがいると心強いかもしれません。セキュリティ対策が増えるドメインとひも付けられている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というファイルに収容できたと仮定します。GiB)すると、シェルスクリプトで以下の記述でIPアドレスに「219.104.OOO.XXX」を代入できます。$1’}`あとは、以下でhttpの記述を作り、echoコマンドでアクセスを実行すればDDNSの更新は可能です。$URLこれらを15分に一度、cronというジョブ(スクリプト)を自動実行するためのデーモンプロセスに設置すれば、自動的にIPアドレスを更新してくれます。ダイナミックDNS(DDNS)を無料で提供している組織もありますので、レジストラが対応していない場合は、こちらを検討するのもよいでしょう。53を利用することが多いです。100%を保証しています)。非常に安価で利用できるので,DNSサーバはクラウドサービスを利用することをおすすめします。Agent)というものをサーバにインストールします。無償で使えるオープンソースソフトとしては以下のようなものがあります。PostfixSendmailqmailここではCentOSで標準的に使われているPostfixを使います。postfix(Postfixをインストール)設定については以下のリンクがわかりやすいです。メールサーバー構築(Postfix+Dovecot)https://centossrv.com/postfix.shtmlCentOSの場合、以下の設定が必要です。hash:/etc/postfix/sasl_passwd」を置き、ハッシュ化させたsasl_passwd.dbを設置し、ユーザアカウントとパスワードをおきました。SMTP認証や、25番ポートブロックは、プロバイダによって仕様が異なりますので、ご注意ください。まれに、プロバイダのセキュリティ設定が変更になる場合があります。MTAの他にメールをクライアントPCで受信するためのPOP/IMAPサーバもインストールして設定します。Agent)というもので、MTAによって振り分けられた電子メールを受信者に配送します。「メール配信がしたい」という目的には関係がありませんが、受信も必要です。ここでは一般的に使われているDovecotをインストールします。dovecot(Dovecotのインストール)基本的に設定を変更するところは少ないのですが、設定ファイルは適宜修正します。5.メーリングリストソフトウェアを導入するここからは,独自ドメインでメールサーバを自社運用することの大きな目的の一つである「ある特定の人たちに向けて定期的に情報発信を行う」用途としてのメーリングリスト基盤を作成します。メーリングリストは自組織向け(チームや部署など)にも組織外向け(お客様,メルマガ購読者など)にも使えるため,立てておくと非常に便利です。メーリングリストソフトウェアの代表格は,以下の2つです。fmlMailmanどちらもとても使い勝手が良いのでおすすめです。弊社でも構築実績があります。メーリングリストの導入については,こちらがわかりやすいです。fml8|インストール作業の概要http://www.fml.org/software/fml-devel/メーリングリストサーバー構築(Postfix+Mailman編)https://centossrv.com/postfix-mailman.shtml今回はmailmanをインストールしました。手順としては以下になります。Thunderbird公式サイトhttps://www.mozilla.org/ja/thunderbird/自前のメールサーバができました!ここまでの流れでメールサーバができました!(かなり端折ってますが😅)成果としては,メーリングリストを使った効率的なメール配信ができるようになった独自ドメインを使ったメール配信基盤が整ったを実現しました。今回手順をまとめてみて,改めてオープンソースソースソフトウェアを使えばあらゆることができるということがわかりました。開発者に敬意を表さずにはいられません。以下の図で、今回インストールした部分をオレンジ色で示してみました。アミュレットで提供しているメールソリューションアミュレットでは,この記事でご紹介したようなメールに関わる様々なソフトウェアの構築や設定を行っています。小規模のメールサーバを構築したい時にはお気軽にお問い合わせ下さい。メールサーバ構築(メールゲートウェイを含む)それぞれの組織で必要に合ったメールサーバを構築します。ショッピングサイト等)メールアーカイブサーバ構築メールサーバを通過した全てのメールを転送し、一つのサーバに蓄積します。過去の記録を保存しておくことが必要な法人様向けのシステムです。検索は全文検索システムで行いますので大量のメールでも速やかに取り出すことができます。コミュニティの運営、カスタマー対応ツールとして活用できるシステムです。一斉メール配信ツールを使って、お客様へのご案内や、プレスリリースの一斉配信なども行えるWebユーザインターフェースもご提供できます。Webメールサーバ構築メールサーバに蓄積してあるメールを読み出し、Web経由でメールの閲覧、検索、投函ができるシステムを構築します(自組織版Gmailといったところです)。内部DNSと役割と管理が異なります。サブドメインの設定、DDNSサーバの設定など、ご要望に応じてシステムを構築します。過去の投稿へ次の投稿へ。