自宅メールサーバーをDockerで構築する

折角自前ドメインあるのでメールサーバーをサクッと構築してみました。結論から先に書いておくと受信迄は至ってかんたんに構築できるものの、昔の迷惑メールの問題もあり自前のドメインで送信するのに一苦労したので、合わせて書いておきます。

必要なソースコードを入手

いくつか必要なファイルを持ってくるだけでも動くようですが、めんどくさいので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の設定と該当のメールアドレスさえ登録しておけば、複数のドメインのアドレスも受信できるようです。これでメアドを無限発行できますね。

次回は自ドメインから送信する方法について書きたいと思います。

投稿を作成しました 112

コメントを残す

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。