• Home
  • About
    • taichi photo

      taichi

      ars longa vita brevis.

    • Learn More
    • Twitter
    • LinkedIn
  • Posts
    • All Posts
    • All Tags
  • Projects

社内メールサーバーの構築

10 Feb 2019

Reading time ~1 minute

メールサーバーの構築

SMTPサーバー、POPサーバーの役割についてはこちらの記事がわかりやすかった。

ここらへんの事前理解を端折(はしょ)って、とりあえず手を動かしていたので、 SMTPサーバーからメールが送れてて、送信先のユーザー側からもメールの到着がキューから確認できているのに、これ以上何をするんや、これで完璧やんけと最後までPOPサーバーについて理解が私には全然できなかったという苦い経験があるので、必ず最初にここらへんの理解を深めることを強くおすすめする。

簡単に言うと、 SMTPとははつまり、メールを相手のメールサーバーまで送るためのプロトコルであり、POPとはメールサーバーにアクセスして自動でメールをダウンロードしてくるためのプロトコルである。


メール設定で最初につまずく「SMTP」「POP」「IMAP」。その意味&設定方法は?より画像引用

SMTPサーバーの構築(送信する用)

mxのバーチャルサーバーを立てる

とりあえず、今回メールサーバーを構築するためのバーチャルサーバーをvagrantでたてる。

vagrantとは

VirtualBoxなどの仮想化ソフトのフロントエンドとして機能し、仮想マシンの簡単な構築や、どこでも同じ環境を再現できるように仮想マシンを管理するためのコマンドラインツール。

vagrant init

これで、Vagrantfileを作成する

Vagrantfileの編集

仮想マシンの構成を記述するファイル。 主に以下の項目を指定する。

  • 起動する仮想マシン指定
  • ネットワーク設定
  • 共有フォルダ設定
  • マシンスペック設定(CPUやメモリの割り当てなど)
  • プロビジョニング(シェルスクリプトや構成管理ツールの実行指定)

今回は、以下のように起動する仮想マシンとネットワークと設定をする

config.vm.box = "ubuntu/bionic64"
config.vm.network = "public_network", bridge: "en0: Ethernet

仮想マシンの起動

$ vagrant up

ログイン

$ vagrant ssh

ipアドレスの変更

仮想マシンにログインができたら、DNSで指定したMXレコードのIPアドレスに合わせる。 /etc/netplan/50-vagrant.ymlをこれを参考にしながら編集をする。

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s8:
      dhcp4: false
      addresses: [172.16.10.110/24]
      gateway4: 172.16.10.99
      nameservers:
          addresses: [172.16.10.113]

Postfixのインストール&設定ファイルの編集

ここを見ながらインストールと設定ファイルの編集をすべし。
(インストールが上手く行かない場合は、sudoで実行したり、apt-get updateとかやると良いかも).
ただし、インストール後の構成設定の選択は[No Configuration]ではなく、[Internet Site]にしないと、設定ファイルが上手く作成されないことがあるので、そこは注意。

それぞれの設定項目についてはここをみるとわかる。 (まあ、設定したいドメインを設定しているだけ)

DNSサーバーの編集

そうしたら、mxレコードが呼び出されたとき、mxのIPアドレスに行くようにする。

使用するDNSサーバーに移動して、Zoneファイルの中身を以下のように編集する。(メールサーバーのある位置に合わせてIPアドレスは変更する)

$TTL 86400
  
@ IN SOA seven.asia root.seven.asia (
  2018050611
  3600
  900
  604800
  86400
)

@      IN NS ns.seven.asia.
@      IN MX 0 mx.seven.asia.
ns IN A  172.16.10.113
gitlab IN A  172.16.10.111
mx IN A 172.16.10.110
nas IN A 172.16.10.112

メールが送信できるか確かめる

メールクライアントの準備

ここまで実装が完了すれば、実際にSMTPサーバーからメールが送信できるか確かめる。 まずは、メールを扱うためのメールクライアントのインストールとその設定をする SMTPサーバーに移動して、以下のようにする。

#メールクライアントインストール
$ sudo apt -y install mailutils 

#メールボックスは Maildir を参照するよう設定
$ sudo echo echo 'export MAIL=$HOME/Maildir/' >> /etc/profile.d/mail.sh 

ユーザーの追加

メールを使うユーザーを追加していく。

OSユーザーの追加

まず、rootにユーザーを変更

$ sudo -s

新しい、OSユーザーの追加

$ adduser testuser #passワードの設定とか順次設定

aliaseの編集

追加したOSユーザーをpostfixに登録する。 ユーザーを登録するファイルは、/etc/aliases

# See man 5 aliases for format
postmaster:    root
testuser: testuser

aliaseの設定を更新し、postfixをリスタートする。

$ sudo newaliases 

$ sudo systemctl restart postfix 

これで、testuserというユーザーに対して、testuser@seven.asiaというメールアドレスが登録される。

メールの送信

先程追加したユーザーにrootアカウントからメールを送信してみる。

#rootアカウントに変更
$ exit

#testuserにメールを送信(ここのドメインに対応したメールサーバーが呼び出される)
mail ubuntu@seven.asia

# Cc の宛先
Cc:

# 件名
Subject: Test mail

# 本文
This is test mail hoping be observed by you.

# 本文を終了する場合は Ctrl + D キー

testuserのメールサーバー(キュー)に届いているか確かめる。

# testuserにアカウントを変更
$ su - testuser

#メールサーバー(キュー)に届いているか確かめる。
$ mail

# 表示したいメールの番号を入力
? 1

ここで、きちんとrootアカウントから自分で送ったメールが届いていることが確認できていれば、SMTPの実装は完了!!!

POPサーバーの構築(受信する用)

dovecotのインストール

以下の手順で、DovecotをインストールしてPOP/IMAPサーバーを構築します。

$ sudo  apt -y install dovecot-core dovecot-pop3d dovecot-imapd

dovecotの設定変更

それぞれの設定項目についてはここをみるとわかる。

設定が一通り終わったら、dovecotをリスタートする。

$ sudo systemctl restart dovecot 

メールサーバーから受信できるか確かめる

いよいよtestuser用のメールサーバーからメールが受信できるか確かめる(既にメールサーバーにメールが届いているのは確認済み)。

メールサーバー内から出て、外部から今回作成したメールサーバーにアクセスし、受信できるか確認する。

# メールサーバーから退出
$ exit

# telnetを使って、POP3プロトコルでmxレコードに接続
$ telnet mx.seven.asia 110 #自分の登録したmxレコードのドメインを選択

# ユーザーの選択
$ USER testuser

# パスワードの入力
$ PASS xxxxxxxx

# 受信しているメールの件数とバイト数を通知
$ STAT

# メールの一覧を受取り
$ LIST

# 指定したメッセージ番号のデータを受信
$ RETR 1

これで受信ができていればメールサーバーの構築は完璧です!!

終わりに

普段自分のなんとなく使っているメールのが裏側でこんな風に動いているとは知らなかった。
DNSサーバーにどんどんレコードを追加していき、それに対応したサーバーを構築して、どんどんネットワークに新しい機能を加えていく感じがよくわかり面白かった。  



ubuntuシステム Share Tweet +1