折角自前ドメインあるのでメールサーバーをサクッと構築してみました。結論から先に書いておくと受信迄は至ってかんたんに構築できるものの、昔の迷惑メールの問題もあり自前のドメインで送信するのに一苦労したので、合わせて書いておきます。
必要なソースコードを入手
いくつか必要なファイルを持ってくるだけでも動くようですが、めんどくさいのでgithubから全てクローンししました。
$ mkdir docker
$ cd docker
$ git clone https://github.com/docker-mailserver/docker-mailserver.git
$ ls
CHANGELOG.md config-examples docker-compose.yml Dockerfile LICENSE Makefile SECURITY.md target VERSION
CODE_OF_CONDUCT.md CONTRIBUTORS.md docker-data docs mailserver.env README.md setup.sh test
docker-compose.yml ファイルが同梱されているので、編集します。編集が必要なのはたったの一行しかしながら使っているdocker-composeが古いとバージョン指定しないとymlが上手く動きませんでした。
$ vi docker-compose.yml
version: '3' #←追加
services:
mailserver:
image: docker.io/mailserver/docker-mailserver:latest
container_name: mailserver
# If the FQDN for your mail-server is only two labels (eg: example.com),
# you can assign this entirely to `hostname` and remove `domainname`.
hostname: mail
domainname: yourdomain.com #←修正
env_file: mailserver.env
.
.
.
docker-composeで起動
信じられないかもしれませんが、必要な設定は以上です。早速起動しましょう。
$ sudo docker-compose up -d
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
061b634f4a08 mailserver/docker-mailserver:latest "/usr/bin/dumb-init …" 7 days ago Up 7 days (healthy) 0.0.0.0:25->25/tcp, :::25->25/tcp, 0.0.0.0:143->143/tcp, :::143->143/tcp, 0.0.0.0:465->465/tcp, :::465->465/tcp, 0.0.0.0:587->587/tcp, :::587->587/tcp, 110/tcp, 995/tcp, 0.0.0.0:993->993/tcp, :::993->993/tcp, 4190/tcp mail-server
メールアドレスを登録
無事に起動できました。次に最低限のアカウントを作成しましょう。同梱されているsetup.shを使います。
$ ./setup.sh email add mymail@yourdomain.com mypassword
$ ./setup.sh alias add postmaster@yourdomain.com mymail@yourdomain.com
ポストマスターの意味についてあまり深くしらなかったのですが、基本的にメールサーバーの管理者のアドレスとなるようです。なのでエイリアスで今回作ったメールアドレスで受信するようにします。
なお、この状態でもThunderbirdなどのメールクライアントからIPアドレス直打ちで以下のポートにアクセスすれば、同ドメイン内は送信できます。
IMAP:143/tcp
SMTP:587/tcp
なお、SMTPといえば25番ポートという印象がある方が多いかと思いますが、最近では587/tcpでsmtpではなく、submissionと言ったりもするようです。
受信用にDNSを設定する
さて、ここまで来たので折角なので外部から受信できるようにしましょう。DNSに設定するのはメールサーバーを指定するMXレコードと、メールサーバーのIPアドレスを引くAレコードの2種類が必要です。MXレコードにはサーバーの優先度を定義する数字が必要になります。
MXレコード:yourdomain.com | 10 mail.yourdomain.com
Aレコード : mail.yourdomain.com | 10.1.1.1
あとは外部サーバーから転送されてくるための25番ポートを外部に開放してください。外部からもメールクライアントからアクセスするには、IMAPの143とsubmissiion用の587の開放も必要ですが、まだSSL化していない点を注意してください。
SMTP:25/tcp
さて、ここまで設定できたら普段使っているメールアドレスから今回作ったアドレスへ送付してみましょう。受信できましたか?ちなみに本サーバーは最初からマルチドメインに対応しているらしく、DNSの設定と該当のメールアドレスさえ登録しておけば、複数のドメインのアドレスも受信できるようです。これでメアドを無限発行できますね。
次回は自ドメインから送信する方法について書きたいと思います。