SSL/TLSサーバ証明書を取得するときに、対象ドメインを保有していることを確認するために、認証局(サーバ証明書を発行する機関)から、承認メールが送られてくることがあります。当然対象ドメイン宛てのメールを受信できなければならないのですが、ちゃんとメールサーバを立てるのはなかなか大変です。そこで今回は、メール転送ソフトの Postfix を使って、サーバ証明書の承認メールを受信して、普段使っているメールアドレス宛てに転送する簡単な方法をご紹介いたします。
サーバの準備
まずはじめに、メールを受信するためのサーバを用意します。SSL/TLSサーバ証明書を取得しようとしているのであれば、WEBサーバが用意されていると思いますので、そのサーバを利用するのが手軽かと思います。
MXレコードをDNSサーバに登録
対象ドメインのMXレコードと、メールサーバのAレコードを、DNSサーバに登録しておきます。下ではメールサーバのサブドメインを「mail」としていますが、これはなんでも構いません。
mail.example.com. IN A 192.0.2.1
Postfix のインストール
Postfix をインストールします。ただ、Linuxサーバであればすでに Postfix はインストールされて起動していると思います。
Postfix の設定
CentOS7での設定例です。
・Postfix の設定ファイルの編集
sudo vi /etc/postfix/main.cf
すべてのインターネットサーバからメールを受信できるように変更します。
↓
inet_interfaces = all
以下の2行を最終行に追加、「virtual_alias_domains」で対象のドメインを指定します。
virtual_alias_domains = example.com
Postfix を再起動します。
・Postfix のバーチャルファイルの最終行に以下の2行を追加します。
sudo vi /etc/postfix/virtual
hostmaster@example.com xxx@gmail.com
1行目の「example.com anything」で対象のドメイン宛てのメールの転送を許可します。2行目は転送設定です。「hostmaster@example.com」は、サーバ証明書の承認メールが送られてくるメールアドレス、「xxx@gmail.com」が転送先のメールアドレスです。
Google Cloud Platform や Microsoft Azure など、メールの送信(転送)が禁止されているサーバの場合は、ローカルユーザに転送します。転送先ユーザのホームディレクトリにメールが保存されます。
バーチャルファイルをデータベース化します。
以上で Postfix の設定は終了です。
メールの受信に使うポートをオープン
メールの受信に使う TCP/25番ポートをオープンしておきます。
firewall-cmd --reload
第三者中継チェック
簡単な設定でしたが、メールサーバとして全世界に公開されています。スパムメールなどの迷惑メールの送信元として悪用されないように、必ず第三者中継チェックを行いましょう。
メールサーバ以外のホストから、telnet コマンドでメールサーバの25番ポート(SMTP)に接続します。※ほとんどの家庭向けプロバイダはOP25B規制(迷惑メール対策のため25番ポートへの接続を禁止)を実施していますので、OP25B規制のない企業向けプロバイダもしくは別のサーバから接続する必要があります。
(CentOS7 などで telnet コマンドがインストールされていない場合は、「yum -y install telnet」でインストールできます)
接続ができたら青文字の部分を入力し、メールサーバに設定したドメイン名(mydomain)以外のメールアドレスに送信できないことを確認します。
Connected to mail.example.com.
Escape character is '^]'.
220 mail.example.com. ESMTP
mail from: sample@example.com ←送信元メールアドレス
250 2.1.0 Ok
rcpt to: test@example.org ←送信先の別ドメインのメールアドレス
454 4.7.1 <test@example.org>: Relay access denied ←この表示がされればOKです、第三者中継が拒否されています。
quit ← 接続終了
おわりに
承認メールの送信先はSSL/TLSサーバ証明書を発行する認証局が決めることですが、RFC2142 で定義されているメールアドレスを使うことが多いようです。今回設定した「hostmaster@example.com」のメールアドレスは、ドメイン管理者用のメールアドレスとして定義されています。
コメント