【postfix】独自ドメインでメール送受信する手順メモ〜バーチャルドメインで複数ドメイン扱う
はじめに
今回やりたかったことは以下
・独自ドメインからメール送信したい
・独自ドメイン宛のメールを受信して別のメールに転送したい
・1つのサーバーで複数ドメインを扱いたい
・できるだけ迷惑メールやスパム扱いされないようにしたい
今回は自サービスからメール送受信したいだけなので、
メーラーなどで送受信するするためにSMTP-AUTHやPOPサーバーなどは作りません
今回やった環境は以下
・ドメインはお名前.comで取得
・サーバーはさくらvpsでcentos6.7
扱うドメインは以下のような形で
・xxx.xxx.sakura.ne.jp
さくらvpsを借りたときにサーバに設定されているドメイン
IPアドレスはxxx.xxx.xxx.xxxとします
実装 - メールを受信して転送するようにする
dns設定
お名前.com設定
ホスト名 | TYPE | VALUE | 優先 |
---|---|---|---|
hoge.jp | Aレコード | xxx.xxx.xxx.xxx | |
hoge.jp | MXレコード | xxx.xxx.sakura.ne.jp | 10 |
MXレコードは〜@hoge.jpへのメールはxxx.xxx.sakura.ne.jpへ送ってくれという意味で設定します
さくらのコンパネからゾーンファイル設定
内容はお名前.comでの設定と同じです
エントリ名 | 種別 | 値 |
@ | IPアドレス(A) | xxx.xxx.xxx.xxx |
@ | メール交換ホスト(MX) | 10 xxx.xxx.sakura.ne.jp. |
設定を確認
> dig hoge.jp ・・・ ;; ANSWER SECTION: hoge.jp. 3600 IN A xxx.xxx.xxx.xxx > dig hoge.jp mx ・・・ ;; ANSWER SECTION: hoge.jp. 3600 IN MX 10 xxx.xxx.sakura.ne.jp.
digコマンドで名前解決できればokです(設定が浸透するまでに時間かかる場合もあります)
ここまでの設定で〜@hoge.jpへメールを送信するとxxx.xxx.xxx.xxxへメールが送られるようになりました。
ので、次はサーバ側で送られてきたメールを受信して転送するように設定します
postfix設定
centos6.7では初めからpostfixがインストールされているので設定ファイルを修正する
/etc/postfix/main.cf
・・・ # 全てのメールを受信 inet_interfaces = all # ipv4のみに inet_protocols = ipv4 # バーチャルドメイン設定を追記 virtual_alias_domains = hoge.jp virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/virtual
・・・ # info@hoge.jpへのメールはxxx@gmail.comへ転送 hoge.jp anything info@hoge.jp xxx@gmail.com
設定を反映
> postmap /etc/postfix/virtual > service postfix restart
実装 - メール送信できるようにする
と言っても、このままでもメール送信はできます。
なのでここでやるのは、送信元を〜@hoge.jpと独自ドメインとして送信してもなるべく迷惑メールやスパム扱いされないようにするというのがやりたいことです。
調べてみるとこの対応としては以下のようなものが出てきました
1. ドメインが逆引きできるようにする
2. dnsのtxtレコードにspfレコードを設定する
3. dkimを設定する
今回、gmail・docomo・softbankのメアドへ送信テストしてみた感じだと
とりあえず1と2を対応しておけば問題ないのかなと思いました
で、今回メールサーバとして使うのはxxx.xxx.sakura.ne.jpと最初から用意されているままなので逆引き設定も特にする必要はありませんでした、
spfレコード設定
お名前.com設定
ホスト名 | TYPE | VALUE | 優先 |
---|---|---|---|
hoge.jp | TXTレコード | v=spf1 ip4:xxx.xxx.xxx.xxx ~all |
さくらのコンパネからゾーンファイル設定
エントリ名 | 種別 | 値 |
@ | テキスト(TXT) | v=spf1 ip4:xxx.xxx.xxx.xxx ~all |
設定を確認
> dig hoge.jp txt ・・・ ;; ANSWER SECTION: hoge.jp. 3600 IN TXT "v=spf1 ip4:xxx.xxx.xxx.xxx ~all"
確認してokなら実際にメール送信して動作確認
> mail -r xxx@hoge.jp xxx@gmail.com Subject: テストタイトル テスト本文 . #ピリオドのみの行を入力で送信
ここまででメールも送信できることが確認できます
ついでに送信するメールを暗号化する技術で「start tls」というのがあるようで
相手のメールサーバがこれに対応していれば暗号化して送って非対応であればそのまま送ってくれるようなのでこれも設定しておきます
start tls
> cd /etc/pki/tls/certs > openssl req -new -x509 -nodes -days 365 -out mail.crt -keyout mail.key > openssl x509 -in mail.crt -outform der -out mail.der > chmod 600 mail.key > ls mail.crt mail.key mail.der
/etc/postfix/main.cf
・・・ # start tls設定 smtp_use_tls = yes smtp_tls_cert_file = /etc/pki/tls/certs/mail.crt smtp_tls_key_file = /etc/pki/tls/certs/mail.key smtp_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
設定反映
service postfix restart
※参考にさせて頂きました
CentOS 6.5 に メールサーバ構築 - 飛光よ、飛光よ