コンテナでメールサーバを構築しました！

## はじめに
　仕事の関係でメールサーバ、メールクライアント、ファイルサーバを利用して検証する必要が出てきました。
　ちょうど今はDockerの勉強していますので、リソース消費や工数と可搬性を考慮するとコンテナで構築しようと決めました。

 ⭐️コンテナの構築対象：メールサーバ
 　個人の検証PCに入れるもの：メールクライアント
 　ありもの：ファイルサーバ

## Dockerインストール

　まずは自分の[Raspberrypi](https://qiita.com/totoro-suika/items/f9b8433670a3f983ab7c)の中の、Ubuntuの中に、Dockerを入れます。
　この前購入した[『仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん』](https://www.amazon.co.jp/dp/4839972745?psc=1&ref=ppx_yo2ov_dt_b_product_details)のP307〜P310を参照にしてUbuntu用のDockerを入れました。

手順は以下です：
  
1.必要なソフトウェアをインストール（うまくいかない場合は個別でインストール）
  ```
  sudo apt-get install apt-transport-https ce-certificates curl gnupg-agent software-properties-common
```
   
   2.PGPキーを追加
  ```
  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```
    
   3.フィンガープリントの確認
   ```
   sudo apt-key fingerprint 0EBFCD88
```
![Pasted image 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991207/117d025b-189c-14e0-3e87-24bb493307b7.png)

   
   4.リポジトリに追加
   ```
   sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
```

   5.リポジトリの更新(途中で404エラー発生することがありますが、問題ありません)
   ```
   sudo apt-get update
```

   6.Docker本体をインストール
```
sudo apt install docker.io
```

![Pasted image 8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991207/7467395b-c5ea-75b2-cd17-dfd72e09a318.png)

   7.管理者以外でも利用できるように設定
   ```
   sudo usermod -aG docker &USER
```

   8.インストールの確認(インストールされているのであれば、もちろんバージョンはちゃんと表示されます)
```
docker --version
```
![Pasted image 11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991207/9b2b3619-1a88-8ce6-6ead-3c916d2acc16.png)


## メールサーバの構築

### docker-composeでメールサーバ構築
　参照：https://karakunphoto.com/development/server/1509/
 
上記のリンク通りではうまく行かないポイント：
　・弄るファイルの名前は「docker-compose.yml」ではなく「compose.yml」です。
　・versionを変更する必要はないし、追加も不要です。ドメイン名だけ変更すればいいです。
　・docker composeをupさせる前に、aptでdocker-composeをインストール必要があります。
```
 sudo apt install docker-compose
```


メールサーバ構築できました。
![Screenshot 2024-03-12 at 20.19.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991207/ee7750fa-a133-b9ba-ab6b-3f8bfd702f6d.png)

下記のコマンドで生成されたコンテナの状態などを確認できます。
```
sudo docker ps -a
```

### メールアドレスを登録

検証ユーザーメールアカウントを登録します。
```
$ ./setup.sh email add mymail@yourdomain.com mypassword
```
Dkimも設定（今後のために設定）
```
sudo ./setup.sh config dkim
```
メールサーバ再起動
```
sudo docker restart mailserver
```

## メールクライアントの準備
　メールクライアントとして、検証者のPC（[Widnows](https://support.mozilla.org/ja/kb/installing-thunderbird-windows)や[Mac](https://support.mozilla.org/ja/kb/installing-thunderbird-on-mac)）にThunderbirdを設定してもらいます。ちなみに、自分のMacにも入れました。

　アカウント設定に関しては[こちらの記事](https://tech.walkit.net/docker-mailserver#toc8)をご参照ください。

　ローカルでメールの送受信ができました！

![Screenshot 2024-03-12 at 20.58.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991207/05fa5b06-7553-3ce2-d0ad-da0c81ceb8eb.png)


## ファイルサーバ
既にこのRaspberrypiに入っています。コンテナの形ではないですが、事前にホストのUbuntuの中にSambaをインストールしてファイルサーバとして動かしています。

[Mac](https://www.pc-koubou.jp/magazine/67247)からSambaサーバに接続する場合は、デスクトップ上やFinder上でキーボードの［Command（⌘）］キーを押しながら［K］キーを押すと、「サーバへ接続」ウィンドウが出現します。 UbuntuサーバのIPとユーザーとパスワードを入れればアクセスできます。

ファイル（Samba）サーバの構築について、ご興味がある方は[こちらの記事](https://qiita.com/murakami77/items/caf431b4fb5c4d67053d)をご参照ください。

## 感想
　コンテナはやっぱり手軽で、導入しやすいです。
　仮想マシンよりは倍以上早くサーバを構築できる感じがします。
 
## 予告
　コンテナやK8sの勉強日記もこれから投稿する予定です。
　そしてSSHリバースポートフォワードも楽しみに待ってください！

## 終わりに
　最後まで読んでいただき、ありがとうございました。ご参考になれば幸いです！