はじめに
これはメールサーバ構築自体の話ではないです。クラウドでサーバ構築した時にコケたポイント。既知の問題のようですが。メモ程度に
前提環境
- 利用クラウド:CloudGarage
- sshホスト:Debian9
- sshクライアント:Bash on Ubuntu on Windows10
- apache2.4
- postfix
- dovecot
- 取得ドメイン:hoge.com と仮定
- Gmailに来たメールのドメイン:fuga.novalocalと仮定
何がどうしてこうなった?
- CloudGarageさんのクラウドをお借りしたので開発用に利用
- 予め用意されていたDebian9のイメージを利用してインストール。apache2.4(今回関係なし) postfix dovecot という極めて標準的な環境を構築しました。
- httpサーバ構築が完了後、メールサーバ構築をし、Gmailのアドレスにテストメールを送信。
- 自分の取得したドメインでは無いところからメールが届く
というながれ。
本当の悪はどこにある?
ドメインがおかしい、と言ったときに見るポイントは多いと思うのですが…
- DNSサーバへの登録は正しいのか?
- ローカル内で解決できているのか?(localhostなどへの送信時にどうなるのか)
- はたまた、サーバソフトは正しく設定されていて、正常に作動しているのか?
といったところになるかと思います。
確認でやったこと
- ドメインの名前解決はできているか?
→apache正常起動確認後、Windowsのブラウザから取得ドメインでアクセスできる。 - サーバソフトの設定は正しいか?
→postfix,dovecotともに、syntax errorなく正常稼働 - localhost宛にメールを送る
- fuga.novalocalからメールが来る←!?
ここで、「おいおいおい、なんじゃこれは…」と。
/etc/postfix/main.cfには
mydomain = hoge.com
myhostname = hoge.com
myorigin = $mydomain
と書かれている。
(゚д゚)ハッ このfuga.novalocal
のfugaは既視感がある。何を隠そう自分でインスタンスを立てた際のホスト名。ならば
5. /etc/hosts
をいじるまで。
127.0.0.1 fuga.novalocal fuga
を
127.0.0.1 hoge.com fuga.novalocal fuga
に変更し保存。
メールをGmailに再送し、確認
キタ━━━━(゚∀゚)━━━━!!
メールは登録したドメインでやってきた。
これで終わりだと思ったら大間違いだった
実はここからが本題。実はこの/etc/hosts
の変更、インスタンス再起動で失効する。ナンテコッタ/(^o^)\
Twitterに書き込んだところこのような返答が…
OpenStack の環境では cloud-init という物を使用して設定しているようです。 こちらのインスタンスで確認できたのでこのファイルで設定されてるかと思います。
— FoxBoxsnet (@FoxBoxsnet) October 18, 2017
カスタムすればいけそうです。https://t.co/X0mMb104uW pic.twitter.com/TYmYc5vise
実際に/etc/hosts
を開いたときに
なぁんてかいてある。
要するに、/etc/hosts
は起動時に /etc/cloud/template/hosts.debian.tmpl
から読み込まれているのである。
よって、変更が必要な際は、/etc/cloud/template/hosts.debian.tmpl
を書き換えないといけない。
でこれを開いて127.0.0.1 hoge.com fuga.novalocal fuga
と追記。
これで再起動でも反映される。やったね!!
追記
CloudGarageさんも対応してくださり、FAQが追加されています。
こちらの方法でも回避できるようですのでご確認ください。
ご覧いただきありがとうございました。
Thanks
- CloudGarage 様 (Twitter: @CloudGarage_PR)
- FoxBoxsnet 様 (Twitter: @FoxBoxsnet )