近年ではEメールによるやり取りもだいぶ減ってきました。プライベートではLINEやインスタのDM、職場ではSlackやTeamsといったメッセージングアプリしか使わないという方も多くいることでしょう。
とは言うものの、「[email protected]」のような独自ドメイン形式のメアドを持てたらそれはそれでロマンを感じませんか?
今回は、独自ドメインのメアドを1つぐらい持っておきたい(もしくは実験的に持ってみたい)けど、わざわざGmailに課金して運用したりするほどモチベーションは高くない…といった方向けに、docker-mailserverというDockerイメージを利用して独自ドメインのメールアドレスを扱うことのできるメールサーバーを建てる手順をご紹介します。
本来であればメールサーバーを自前で建てるのはかなり面倒くさそうなのですが(参考)、このdocker-mailserverを使うと比較的簡単に自前のメールサーバーを建てることができます。
他サイトの解説ではDNSレコードの設定の説明が省かれているところも多かったのですが、メールサーバー周りに疎い自分からすると、メールサーバー用のDNSレコードの設定内容の知見も無い状態でわかりにくかったので、このページではDNSレコードの設定内容も掲載しています。
Warning免責事項
この記事ではあくまで「独自ドメインのメールアドレスを使ってEメールを送受信することのできるメールサーバーを建てる」事を目的としているので、セキュリティについては一切考慮していません。また、筆者もこれといってメールサーバー周りに精通しているわけではないので、もしかしたら間違った発言をしてしまっているかもしれません。
この記事ではあくまで「独自ドメインのメールアドレスを使ってEメールを送受信することのできるメールサーバーを建てる」事を目的としているので、セキュリティについては一切考慮していません。また、筆者もこれといってメールサーバー周りに精通しているわけではないので、もしかしたら間違った発言をしてしまっているかもしれません。
必要なもの
- Dockerの基礎知識
- Docker(Docker Compose)が動くサーバー
- 独自ドメイン
前提条件
今回は[email protected]
というメールアドレスを作成し、実際にメールの送受信ができるところをゴールとします。
DNSレコードの設定
以下のようにDNSレコードを設定してください。(もちろんドメインはご自身のものに読み替えてください)
ホスト名 | タイプ | TTL | 内容 | 優先度 |
---|---|---|---|---|
dagashi.pw | A | 3600 | サーバーのIPアドレス | – |
dagashi.pw | MX | 3600 | mail.dagashi.pw | 0 |
mail.dagashi.pw | CNAME | 3600 | dagashi.pw | – |
TTLはお好みで、MXレコードの優先度はとりあえず最優先である0
を指定しておきました。
ちなみにGoogleドメインとかだと、内容
と優先度
のフィールドが一緒になっていたりするのですが、0 mail.dagashi.pw
という風に入力すれば設定できます。
各種ファイルの用意
公式ドキュメント通りにやると何故か404が返ってきたのでZennの記事を引用させていただきました。
docker-compose.ymlの編集
用意したdocker-compose.yml
を開くとデフォルトではこのようになっていると思います。
これの6行目、hostname
の箇所を先程DNSレコードに設定したmail
というサブドメインがついたFQDNに置き換えます。
コンテナの起動
docker-compose.ymlの編集が完了したら早速コンテナを起動してみましょう!

コンテナの起動中すごい数のログが流れてきますがお使いのPCは正常です😇
メールアドレスの作成
コンテナが無事起動したら、メールアドレスを作成しましょう。
メールアドレスを作成したあと、そのアドレスをPostmasterのエイリアスとして登録しています。
(くどいですがメアドとパスワードは自分の作成したいものに読み替えてください)
Postmasterについて
メールサーバーの管理者アカウントのことです。例えば、Eメールを送信したらエラーメールが返ってきたなんていう経験ありませんか?
実はあのエラーメールはPostmaster名義のアドレスで送信されていたりします。
setup.shについて
docker-mailserverの設定用シェルスクリプトです。メールアドレスの追加といった各種設定はdocker exec
でコンテナに入って直接実行するのではなく、このsetup.sh経由で行います。
公式ドキュメントのこの項の中間あたりにコマンド一覧が載っています。
setup.shのemail update
コマンドが誕生する経緯となったGitHubのIssueなんかも見つけたのですが、読み応えがあって面白かったです。パスワードが変更したくなったらぜひ使いましょう。
メーラーからログインする
メールアドレスの作成も完了したところで、早速今作ったメールアカウントにログインしてみましょう。
と言いたいところですが、今回は暗号化の設定(SSL対応作業)をしていないせいかそのままでは普通にログインできなかったのでいくつか設定をします。
#
メーラーについて
ここから先の作業においては各自好きなメーラーを使っていただいても構いません。が、SparkというメーラーはMacとiOSで検証したところ認証で弾かれてしまい使えませんでした。iOSの純正メールアプリや、Outlookでは普通に認証が通りました。
SSL対応完了後にDockerコンテナのログを見たところSASL CRAM-MD5 authentication failed: Invalid authentication mechanism
というエラーが発生していて、このページを読む限りではおそらくメーラー側の問題かと思われます。
今回はThunderbirdで進めていきます。

まずは名前・メールアドレス・パスワードを入力し、左下にある手動設定をクリックします。

画像のようにホスト名
とポート番号
のフィールドを編集し、再テスト
をクリックしたあと完了をクリックします。

するとこんな感じでまっさらな状態の受信トレイが開けたかと思います。
実際にメールを送受信してみる
受信テスト
まずは受信テストからやってみましょうか。

こんな感じの大して面白みも無いようなメールをGmailから送信します。

メールを受信することができました!
送信テスト
送信についてですが、自分の場合GmailやiCloudのメールアドレスに送信しても送信の段階でエラーメールが来て弾かれてしまいました。迷惑メールフォルダーにすら入らないということです。
この挙動になるのは、恐らく以前同じIPで試験的にメールサーバーを建てた時に、SSLやDKIM、SPF等何も設定していない状態でGmailにメールを送信したので、スパム扱いされてそのままSpamhausにIPが共有された→GmailやiCloudに送っても弾かれるようになったのかなと思っています。
なので普通に送信できる人もいるかもしれませんが正直分かりません。
一応この記事の後半でSpamhausのブラックリスト解除申請について触れています。
しょうがないので、捨てメアドを発行してそこにメールを送信してみることにします。

今月の頭に富山一人旅行で行った時に環水公園で撮影した、世界一美しいスタバと夜桜のコラボショットを添付しています。

ちゃんと画像付きで送信することができました👍
(応用編) SSL・DKIM・SPF設定など
ここからは、今回作成したメールアドレスをよりセキュアに利用できるように設定していきます。
目標としては、「Gmailの(迷惑メールフォルダーではなく)受信トレイに入るメールを送信する」ことです。
現状ではGmail宛に送信すらできていないのと、SSL、DKIM、SPF周りの設定を怠った場合、Gmailは受け取ったメールを迷惑メールとして分類するのでその対策ということになります。
自分用の備忘録として書くので、説明は結構雑かもしれません。
今回の内容の応用として気になる方はぜひ試してみてください。
SSL対応
既にCertbotなどでメアドに使っているドメインに対応するLet’s Encryptの証明書を取得済みなのが前提条件です。(/etc/letsencrypt/live/
配下に証明書が存在すればOK)
docker-compose.ymlと同じ階層にあるmailserver.env
を開き
SSL_TYPE
にletsencrypt
を指定します。
続けて、docker-compose.yml
を開き
volumes
に/etc/letsencrypt:/etc/letsencrypt
を追記して、証明書をバインドマウントします。
ドメインはメアドから勝手に判定してくれるので特に「どのドメインの証明書を使う」というのは指定する必要ありません。
DKIM設定
setup.shから、DKIMで使う鍵を生成します。
コマンド実行後./docker-data/dms/config/opendkim/keys/ドメイン/mail.txt
を開くと
中身がこんな風になっていると思うので
のように、間に挟まっている改行とダブルクォーテーションを消して連結させます。
そして、その連結させた文字列を

ホスト名をmail._domainkey
としてTXT
でDNSレコードに登録します。(Googleドメインの場合消したはずのダブルクォーテーションが勝手に挿入されるのは仕様)
SFP設定

ドメインに対してTXT
レコードで"v=spf1 mx ~all"
と設定します。
Spamhausのブラックリスト登録解除申請
参考: https://takublo.net/spamhaus/
注意事項としては、申請フォームに入力するメアドは個人のGmailアドレスではなく、ブラックリストに引っかかっているIPと紐付いているメアドを使用します。(今回の場合は[email protected]
)
あと、「解除完了しました」みたいなメールは特に来ませんでした。
設定確認
https://www.appmaildev.com/jp/dkimにアクセスして、次のステップボタンをクリックして表示されたメアドに今回作成したメアドから空メールを送ります。(空メールとかもう死語ですよね。それとももはやメアド自体死語なの…?)

全ての項目をクリアしていればOKです。ちなみに、Spamhausのブラックリストに入っているかはRBL
で判断できます。
ブラックリストの解除申請をして少し経ってから確認をしたのでしっかりNotListed
にステータスが変わっています。
送信テストのリベンジ
準備は整ったので早速Gmailに向けてメールを送信してみましょう!

今回は毎年年末に行く「湘南の宝石」で撮影したシーキャンドルの画像を送ってみます。

キタ――(゚∀゚)――!!
しっかり受信トレイに入っていました。暗号化の署名なんかもしっかり確認できますね!
めでたしめでたし🍑
この記事は 2025/07/11 01:48:52 にビルドされました