.net column
.NET開発者のためのブログメディア

メールサーバーってなに?構築する際の7つの流れや注意点を紹介

 
メールサーバーってなに?構築する際の7つの流れや注意点を紹介
基本情報技術者試験の試験対策はこちら>>
SE
メールサーバとはどのようなものですか?
PM
メールを送受信するサービスが動作しているサーバのことを言います。

メールサーバーとは


メールサーバーとは、メールを送受信するサービスが動作しているサーバーのことです。送信・受信はそれぞれ別々に動作しているため、両方のサービスをサーバーにインストールし、構築する必要があります。

送信に使用するサービスとして「SMTP」、受信に使用されるサービスとして「IMAP」と「POP」があります。まずはこの基本的な用語について理解しましょう。

メールサーバー構築に必要なサービス4つ


メールサーバー構築に必要な以下の4つのサービスについて説明します。

1. SMTP(Simple Mail Transfer Protocol)
2. IMAP(Internet Message Access Protocol)
3. POP(Post Office Protocol)
4. DNS(Domain Name System)

1:SMTP

「Simple Mail Transfer Protocol(シンプル・メール・トランスファー・プロトコル)」の略でSMTPと言います。SMTPが動作しているサーバーをSMTPサーバーと言います。

SMTPとはメールを送信するための通信プロトコル、つまり、送信するための約束事のひとつであり、簡単に言うとメールを送信するもしくは受信するサービスが守るものです。

この通信プロトルを守るサーバー同士が通信することでメールが送信できます。

メールサーバーの構築においては、まず、メールをやり取りするSMTPのサービスが必要になります。

2:IMAP

IMAPとは「Internet Message Access Protocol(インターネット・メッセージ・アクセス・プロトコル)」の略です。スマートフォン、タブレットなど複数の場所でメールを受信する際に使われます。IMAPプロトコルに対応している受信サーバーのことをIMAPサーバーといいます。

IMAPは、メールをサーバーに置いたまま、メールを読むための通信プロトルです。

IMAPサービスの仕組みを構築することで、メールをサーバーに置いたまま読ませることができます。

3:POP

POPとは「Post Office Protocol(ポスト・オフィス・プロトコル)」の略です。PCでよく使われます。POPプロトコルに対応している受信サーバーのことをPOPサーバーといいます。

POPは郵便局の取り扱いのように、メールをPCもしくはスマートフォンなどに届けるための通信プロトコルです。

POPサービスの仕組みを構築することで、メールを届けることができます。

4:DNS

DNSとは「Domain Name System(ドメイン・ネーム・システム)」の略です。人間が扱いやすいドメイン名を、コンピュータが扱いやすいIPアドレスに変換するサーバーのことをDNSサーバーといいます。

DNSサーバーはSMTPサーバーの要求を受けて、通信する先のSMTPサーバーのIPアドレスを返します。SMTPサーバーはこのIPアドレスをつかって対象のメールを届けます。

DNSサーバーでは、複数のホストで分散化して「ドメイン」と呼ぶ階層構造で、情報を管理しています。

DNSサーバーはメールサーバーとは別のサーバーとして構築されますが、メールサービスのためには必要なものです。

メールサーバーの構築方法6つの流れ


メールサーバーの構築方法の流れを以下の6つで説明します。

1.メール送信サービス(Postfix)のインストール
2.Postfixの設定
3.メール受信サービス(dovecot)のインストール
4.dovecotの設定
5.ファイアウォールの設定
6.セキュリティのチェック

メールサーバーはこれらの手順により構築します。

1:メール送信サービス(Postfix)のインストール

Linuxサーバーが構築済みの場合、簡単にサービスのインストールが可能です。

まずは、サービスをインストールする権限(root権限)に昇格します。

user@linux# su – root
(rootのパスワードを入力)

その後ルート権限で以下のコマンドを入力します。

root@linux# apt-get install postfix

インストールの途中で、メールサーバーの用途を問われます。用途に合わせて「ローカルのみ」「インターネットサイト」のどちらかを選びましょう。

次に、メールサーバーのFQDN(完全修飾ドメイン)を問われるので、お持ちのドメインを入力しましょう。DNSサーバーがない場合は、ドメインも持っていないかと思いますので、そのまま「次へ」をクリックしインストールを完了させてください。

※メールを送受信する際、「@」の後ろにつく文字列がFQDNです。例えば、@google.co.jpや@yahoo.co.jpのように、@から後ろの「google.co.jp」や「yahoo.co.jp」と入力します。メールサービスに独自のホスト名(mail)を付けて管理する場合は、「mail.example.com」、「ホスト名」+「ドメイン名」にしましょう。

以上でPostfixのインストールは完了です。

Postfixとは?

Postfix(ポストフィックス)はオープンソースのメール転送エージェント(MTA)です。オープンソースであるため、手軽に導入できます。

Postfixは後発で、先行したSendmailとの互換性を確保しています。例えば/var[/spool]/mail や /etc/aliases、NIS、~/.forward ファイルをサポートします。そのうえで、管理・設定を容易にすることも目指しておりsendmail.cfは使いません。

Postfixは、開発が進んでおり2021年4月29日に、安定版の最新バージョン 3.6.0 がリリースされています。

出典:Postfix Announcements
参照:http://www.postfix.org/announcements.html

2:Postfixの設定

インストール後に必要な設定をご紹介します。※FQDNは「mail.example.com」に設定済みの前提で記載します。

root@linux# cp /usr/share/postfix/main.cf.dist /etc/postfix/main.cf
(設定の大元のファイルをコピーします。)

コピー後のファイルを、以下のように編集してください。

root@linux# vim /etc/postfix/main.cf

# 78行目:先頭の「# 」を削除
mail_owner = postfix
# 94行目:先頭の「# 」を削除しホスト名指定
myhostname = mail.example.com
# 102行目:先頭の「# 」を削除しドメイン名指定
mydomain = example.com
# 123行目:先頭の「# 」を削除
myorigin = $mydomain
# 137行目:先頭の「# 」を削除
inet_interfaces = all
# 185行目:先頭の「# 」を削除
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 228行目:先頭の「# 」を削除
local_recipient_maps = unix:passwd.byname $alias_maps
# 270行目:先頭の「# 」を削除
mynetworks_style = subnet
# 287行目:自身のネットワークを先頭に「# 」を追記
mynetworks = 127.0.0.0/8, 10.0.0.08, 172.16.0.0/12, 192.168.0.0/16
# 407行目:先頭の「# 」を削除
alias_maps = hash:/etc/aliases
# 418行目:先頭の「# 」を削除
alias_database = hash:/etc/aliases
# 440行目:先頭の「# 」を削除
home_mailbox = Maildir/
# 576行目:コメントにしてその下の先頭の「# 」を削除
#smtpd_banner = $myhostname ESMTP $mail_name (Debian)
smtpd_banner = $myhostname ESMTP
# 650行目:先頭に「# 」を削除
sendmail_path = /usr/sbin/postfix
# 655行目:先頭に「# 」を削除
newaliases_path = /usr/bin/newaliases
# 660行目:先頭に「# 」を削除
mailq_path = /usr/bin/mailq
# 666行目:先頭に「# 」を削除
setgid_group = postdrop
# 670行目:コメント化
#html_directory =
# 674行目:コメント化
#manpage_directory =
# 679行目:コメント化
#sample_directory =
# 683行目:コメント先頭に「# 」を追記

以上で設定の変更は完了です。(「Esc」→「:wq」と入力し、記載した内容を保存し、vimエディターを終了します。)

以下のコマンドでPostfixを再起動しましょう。

root@linux # newaliases
root@linux # systemctl restart postfix

以上でPostfixの構築が完了です。

3:メール受信サービス(dovecot)のインストール

次に、dovecotをインストールします。ルート権限で以下のコマンドを入力します。

root@linux# apt-get install dovecot-core dovecot-pop3d dovecot-imapd

インストールの途中で同意文が表示されるので、「Y」を入力し進めます。

以上でdovecotのインストールは完了です。

dovecotとは?

Dovecot(ダヴコット)は、Linux/UNIXライクなシステム向けのオープンソースのIMAPおよびPOP3に対応する電子メールサーバーです。

Dovecotは、主にセキュリティを念頭に置いて作成されています。そして、小規模および大規模なインストールの両方に適用できます。

Dovecotの運用には特別な管理権限は不要で、メモリの使用も心配せずに運用できます。この点は運用の面で考えると大きなメリットとなるでしょう。

Dovecotは、開発が進んでおり2021年3月4日に、安定版の最新バージョン V2.3.14 がリリースされています。

出典:Stable releases
参照:https://www.dovecot.org/download

4:dovecotの設定

root@linux# vim /etc/dovecot/dovecot.conf

# 30行目:先頭の「# 」を削除
listen = *, ::
root@mail:~# vi /etc/dovecot/conf.d/10-auth.conf
# 10行目:先頭の「# 」を削除し変更
disable_plaintext_auth = no
# 100行目:追記
auth_mechanisms = plain login
root@mail:~# vi /etc/dovecot/conf.d/10-mail.conf
# 30行目:Maildirに変更
mail_location = maildir:~/Maildir
root@mail:~# vi /etc/dovecot/conf.d/10-master.conf
# 107-109行目:先頭の「# 」を削除し追記
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}

root@linux# systemctl restart dovecot

以上でdovecotの構築が完了です。

5:ファイアウォールの設定

ファイアウォール(Firewall)とは、企業などの内部ネットワークを、インターネットを通して侵入してくる不正なアクセスから守るための「防火壁」です。

Internetの発展により、企業内のネットワークをWebに接続することが当たり前になり、Web経由で内部ネットワークに侵入し、内部データの盗聴、攻撃などをされる可能性が大きくなりました。

そのための高度なセキュリティシステムの構築が必要となり、ファイアウォール、つまり「防火壁」が誕生しています。

ファイアウォールは、送られてくるパケットを不正なアクセスであると判断した際には、管理者に通報したり、削除したりできます。このため、ファイアウォールは様々なネットワークに柔軟に対応できるようになっています。

メールサーバーもファイアウォールにより防御されます。具体的にはInternetとメールサーバーの間に設置され、通信に対して、必要最低限のパケットのみがファイアウォールを通過できるよう設定されます。

ここで、正しく設定されたファイアウォールはメールサーバーを守る防火壁となります。

6:セキュリティのチェック

脆弱性診断サービスとは開発したアプリケーションや利用しているプラットフォームに、脆弱性がないかを判定するサービスとなります。

大手セキュリティ会社にはそれぞれが提供するサービスについての説明があるので、コストとあわせてそれを検討します。診断をやってそれっきりではなく、対策についてのコンサルティングサービスを含むものもあるので安心のための利用を検討します。

また「試しにメールサーバーを構築してみた」程度の内容であれば、無料で診断を受けられるサービスも存在します。こちらについてもWeb上に情報があるので、調べて利用できます。

いずれにせよ「メールサーバーを構築しました」という状態での公開は危険です。メールサーバーの公開は「悪意を持った利用に加担させられる」ような話もあるため、サーバーを公開するにあたっては十分に注意します。

セキュリティの対策方法

SASLとはSimple Authentication and Security Layerの略で、RFC4422で定義されています。これは「認証のやり取り」と「認証情報の保護」に関する仕組みをあらかじめアプリケーションが使いやすいようにプラグインとして用意しているフレームワークです。

メール送信のためのSMTP、POP、IMAPで通信するアプリケーションの開発者は1から開発しなくても認証に関する機能を利用できます。

SASLを通して以下の3つのセキュリティ機能を提供します。

・認証:通信相手が正しいこと(Authentication)
・完全性:通信が改竄されていないこと(Integrity)
・機密性:通信が盗聴されていないこと(Confidentiality)

SASLでは、具体的な実現方法は規定されていないので、各サービスに対応するアプリケーションの開発者がSASLに対応させます。

メールサーバーのセキュリティの対策は、送信側のSMTPと受信側のPOP、IMAPに対応するそれぞれのアプリケーションがSASLに対応することで担保されます。

セキュリティが担保されるとは、認証において、完全性と機密性が適切な状態であることを示します。

これこそが、認証における完全性と機密性が担保されたメールサーバーの構築です。

メールサーバーを構築する際の注意点3つ

メールサーバーを構築する際の注意点として、以下3つ說明します。

1.IMAPとPOPの違いを理解する
2.必要なメール機能や使用法を把握してサーバーを選ぶ
3.暗号化技術を活用する

1:IMAPとPOPの違いを理解する

メール受信のサービスにはIMAPとPOPがあります。

IMAPはメールサーバーにあるメールをスマートフォン等の端末で受信してもメールサーバーからは削除されません。

POPはメールサーバーにあるメールをPC等の端末にダウンロードします。一度受信するとメールサーバー上から削除されます。

2:必要なメール機能や使用法を把握してサーバーを選ぶ

LinuxにはWindowsやmacOSのようにLinuxという一種類のOSがあるわけではありません。無数のディストリビューションを比較、検討し、用途にあったものを選択することになります。

さて、メールサーバーの用途を考えるうえで、まず考えるのは「なんのために、メールサーバーを構築するのか」という話になります。

簡単な話というと「練習のため、自分ひとりで使うメールサーバーを構築する」という話でしょう。この場合「多少のトラブルが起きても勉強のネタになる」ぐらいの考え方になります。

一方「営利企業において多くのユーザーが利用するメールサーバーを構築する」となると「トラブルが起こる可能性は排除すべき」となるでしょう。

このようにメールサーバー用途により、考え方が大きくことなるので、まず、これを認識した上での選択となります。

また、Linuxのディストリビューションは無数にあるので、特に人気のある2つのディストリビューションについて説明します。

CentOS:
スローガンは「コミュニティによるエンタープライズ級のOS」です。商用でも使える圧倒的高品質のOSを目指しています。

CentOSは商業的に成功している「Red Hat Enterprise Linux」通称「RHEL」を元に作成されています。

なお、RHELは「GNU General Public License」通称「GPL」にしたがっており、ソースコードが入手可能になっています。そして、入手したRHELのソースコードから商業パッケージや商標を取り除いてリビルトしたものがCentOSです。

このためCent OSはRHELのクローンとよばれています。CentOSはソースコードのレベルで同じなのでRHELで適用できるもの、たとえば、セキュリティパッチはCent OSでの適用もできます。

この性質のため、CentOSは無償でありながら、有償のRHELと同じレベルでの運用ができるのです。

Ubuntu:
スローガンは「誰にでも使いやすい最新かつ安定したOS」としています。
Linuxを普通の人に使いやすくするということをめざしており、実際Windowsの代わりとしての利用できます。

UbuntuはルーツはDebianです。このDebianは「ボランティアによってフリーでオープンなオペレーティングシステムを作成する」を目標としています。

Debian自体の方向性は比較的に保守的です。安定板においては、十分にテストされた、少々古いパッケージがチョイスされることになります。これこそがDebianがDebianたるゆえんと言えます。

一方、UbuntuはDebianの開発版を元に派生し作成されています。設定ファイルや設定方法などDebianとの共通点も多いですが、Ubuntuは先進的なスタイルで新しいものをどんどん取り入れているのが特徴です。

このようにLinuxのディストリビューションはそれが違えば、思想から実現されるものまで大きく違います。それを認識の上の選択が必要になります。

3:暗号化技術を活用する

メール暗号化には大きく分けて「共通鍵暗号方式」と「公開鍵暗号方式」の2つがあります。

共通鍵暗号方式
共通鍵暗号方式とは、暗号化するときの鍵と、復号するときの鍵が共通である方式です。これは、暗号化する時と復号化する時に同じ鍵を使います。

鍵の内容をどのように伝えるのかというのが課題になります(これを通常のメールで送ってしまえば盗聴などのリスクがあります)。

公開鍵暗号方式
公開鍵暗号方式は公開鍵と秘密鍵という2種類の鍵を使います。

公開鍵は受信者が公開している誰でも取得可能な鍵であり、誰でもメールを暗号化できますが、復号のためには受信者しかしらない秘密鍵が必要になります。

メールを送るときは、送信者は受信者が公開している公開鍵で暗号化します(これで暗号化されたメールは秘密鍵をつかって復号しなければ、読むことができなくなります)。

一方、受信者は暗号化された内容を複合するための秘密鍵を持っています。つまり、秘密鍵を知っている受信者のみが公開鍵で暗号化したメールを読めることになります。

このような暗号化の技術があるのでメールサーバーの構築においては適切なものを選択する必要があります。

SE
自分でサーバを構築することが出来るのですね。
PM
今回の方法は、簡単に構築することが出来るものなので、設定してみるのもいいですね。

メールサーバーを構築しよう

メール送信・受信それぞれのサービスをインストールし設定することで、メールサーバーの構築が完了します。あとはOutlookやThunderbird などのメールソフトを使い、送受信の確認をしてみましょう。

他にもメールのサービスはいくつかあります。今回ご紹介したものは簡単で、機能が豊富です。ぜひ活用してみてください。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags