ラベル myDNS の投稿を表示しています。 すべての投稿を表示
ラベル myDNS の投稿を表示しています。 すべての投稿を表示

2015年3月6日金曜日

【Postfix】【myDNS】Gmail宛のメールが550, "5.7.1"エラーで届かない場合の対処

自サーバーのPostfixを使ってメール送信すると、gmailアドレス宛のメールが受信拒否されてしまいました。

エラーの内容は、こちらです。
550, "5.7.1", Our system has detected that this message is likely unsolicited mail. To reduce the amount of spam sent to Gmail, this message has been blocked. For more information, review this article.(550, "5.7.1", このメッセージはシステムによって未承諾メールであると検出されました。Gmail に送信されるスパムの量を減らすために、このメッセージはブロックされています。詳細については、こちらの記事をご覧ください。)
google SMTP エラー リファレンス から引用
ちょっとググってみたところ、SPFレコードが登録されていない事が原因の様です。
参考(Postfixから送信したメールがGmailに届かないGmail相手に迷惑メール扱いされる場合(SPFレコードのIPv6対応)

myDNSを使っていれば、SPFレコードは自動生成されます。
では、何故届かなかったかというと、私がAレコードしか登録しておらず、かつ両サーバがIPv6に対応していたのが原因の様です。

MyDNSでは、

Aレコード登録 → IPv4のSPFレコード
AAAAレコード登録 → IPv6のSPFレコード

が、自動生成されるみたいです。

また、両サーバがIPv6に対応してる状態では、IPv6のアドレスで処理されるらしいので、Aレコードしか登録していない場合は、SPFレコードが無い状態になってしまいます。

解決方法としては、こちら側のサーバをIPv6を使わない設定(inet_protocols = ipv4)にするか、
MyDNSにAAAAレコードも設定して、IPv6のSPFレコードについても自動生成してもらえばOKです。


私の環境では、これで正常に届くようになりました。


2015年3月5日木曜日

【CentOS6.5】【Postfix】【Dovecot】メールサーバのクイックセットアップ①

メールサーバの再セットアップも、ひと通り終わったので、設定についてメモしておく事にした。

(※2016/05/06 一部加筆)


まずは最小限の設定で、『これだけやっておけば外部とメールが送受信できる』というところまで、
設定する。

ここまでできれば、ネットワークやiptables等の、メールソフト以外の設定には問題ない事が分かるので、後ほど認証や暗号化等の設定を追加した際にも、問題の切り分けがしやすい、はず。

環境は以下の通り。

OS : CentOS6.5
MTA : postfix2.6.6
MRA : dovecot2.0.9
MUA : Thunderbird
DNS : myDNS

ドメイン名(例) = xxx.mydns.jp (xxxは伏せ字
ホスト名(例) = mail.xxx.mydns.jp (xxxは伏せ字


  • 名前解決にはダイナミックDNSサービスの MyDNS を使っているので、下記のMXレコードの設定前に、登録と初期設定を行っておく必要がある。
  • また、ポート開放についてもここでの説明は割愛しているが、適宜サーバのiptablesやファイアウォールの設定を事前に行う必要がある。


① myDNSの設定


MXレコードとAレコードに、メールサーバのホスト名を入力する。
(他に、IPアドレスの設定は事前にやっておく)

※MXレコードの欄は、FQDNで登録しないとうまく動作しなかった。



② postfixの設定

postfixの設定ファイル 『/etc/postfix/main.cf』 の下記項目を編集する。
なお、デフォルト値はpostconf -d で確認できる。

myhostname = mail.xxx.mydns.jp

        メールサーバのホスト名(FQDN)を記入。
        DNSのMXレコード、Aレコードの設定と一致させる。

      myorigin = $mydomain (行頭の"#(コメントアウト)"を外す)

        送信メールに付加される送信元アドレスの@以降の形式を指定
        (myhostname か mydomain)。
        mydomainに設定することで、送信元メールアドレスは、foo@xxx.mydns.jpになる。

inet_interfaces = all

        外部のメールサーバから送られてくるメールを受け取る。

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

        他のメールサーバに転送を行わない(=このメールサーバが受信する)ホスト、ドメイン
        を指定する。$mydomain を含めておくことで、foo@xxx.mydns.jp宛のメールを受信できる。

      home_mailbox = Maildir/ (または Mailbox)を指定

        メールを保存する場所を設定。
        Mailbox 形式は、全てのメールを1つのファイルに保存する。
        Maildir/ 形式は、1つのメール=1つのファイルになる。パフォーマンスやセキュリティ等、
        Maildir/ の方が優れている、らしい。

         Mailbox を指定した場合は、さらにメールスプールディレクトリを指定する。
         → (mail_spool_directory = /var/mail または /var/spool/mail)

   ※Maildir/ ディレクトリは、各ユーザのホームディレクトリ配下に自動で生成される。   

以下は基本的にはデフォルト値のままでもいいが、場合によっては変更する。

      mydomain = xxx.mydns.jp

        何も指定しなければ、myhostnameの最初の".(ドット)"までが削除された値が指定される。
        myhostname = mail.xxx.mydns.jp であれば自動的に mydomain = xxx.mydns.jp となる。
        (ホスト名がaaa.bbb.xxx.mydns.jp のような場合は変更する)
      

      mynetworks_style = subnet

      mynetworks = aaa.bbb.ccc.0/dd(自ホストのネットワーク), 127.0.0.0/8(自ホスト)

        メールサーバを利用可能なクライアントのネットワークを設定。
        上記は両者とも自ホストと、自ホストのネットワークを指定している。
        両方記載した場合には、mynetworks が優先される。
        (自ホストのネットワークを明示したい場合には、mynetworksに記載する。)



inet_interfaces を変更した際はreloadではなく再起動が必要。
main.cf の編集後、忘れずにpostfixを再起動させる。

# service postfix restart

長くなってきたので、次回に続く

2015年3月3日火曜日

【CentOS6.5】@myhostname宛のメールは受信できるが、@mydomain宛のメールが受信できない その②

昨日の続きです。

怪しそうな設定箇所を見なおしても特に問題なく、Postfixのログをみて、ググったりしても良く分からなかった(受け取り拒否しているような痕跡もない)。

「ネットワークの設定に問題があるのかな?」と思いネットワークの設定ファイルを少しづつ変えてトライし続ける。起こっている事象から原因を特定できればいいのだが、私の様な未熟者は、取り敢えず手当たり次第に引っ掻き回して、上手くいったら、そこから理由を逆算するしかない。

私が使っているVPS 『ConoHa』は、スナップショット機能があるので、変な設定になっても一発で元に戻せる。こういう実験をする時には便利だ。

/etc/sysconfig/network
/etc/sysconfig/network-scripts/ifcfg-eth
/etc/resolv.confi

あたりを書いたり消したり、、、

挙動は変わらない。

やっぱり何かDNSの設定がおかしいのかも?と思い、myDNSの設定を変えてトライしてみる事にした。

DOMAIN INFO

myDNSの設定項目は上の通りだ。

私の設定では

Domain:hoge.mydns.jp(hogeは適当な文字列)
MXレコード : mail(メールサーバのホスト名)
Aレコード : server(サーバのホスト名)
Aレコード : www(ウェブサーバのホスト名)
Aレコード : mail(メールサーバのホスト名)

としていた。

ここで、

MXレコードをホスト名でなく、FQDNで指定してみた。 ⇒ @mydomainで届く。解決!
MXレコードを未指定(自動補完)にしてみた。 ⇒ @mydomainで届く。解決!

という訳で、MXレコードの記載が問題だったようだ。

具体的には、MXレコードにホスト名を記載すると、ホスト名の後にドメインが自動補完されると思っていたが、実際にはされていなかった?ようだ。

と、いうわけで、解決法は、MXレコードには、FQDNで記載するという事になる。

しかしmyDNSの設定について解説しているサイトでは、ホスト名だけの指定で解説されているし、設定項目の説明にも"hostname"と書かれている。私自身、以前はホスト名だけの指定で問題なかった。

何か変更があったのか、他の人にも起こっている事なのか、いつからそうなのか、謎である。

=====

ここから先は、自分の頭の整理のために、今回のトラブルの際に、名前解決で何が起こっていたのかを推測して書いていく。

ケース1 foo@hoge.mydns.jp 宛の場合


① foo@hoge.mydns.jp 宛にメールを送る。

② DNSサーバがMXレコードを参照して、メールサーバのFQDNを調べる。

 ③-A MXレコードに[mail.hoge.mydns.jp]と記載していた場合

  Aレコードを参照して、ホスト名がmail=FQDNが[mail.hoge.mydns.jp]が見つかる。

  Aレコードに記録されている[mail.hoge.mydns.jp]のIPアドレスへ配送する。

 ③-B MXレコードに[mail]と記載していた場合

  Aレコードを参照するが、FQDNが[mail]は見つからないので、配送できない。


ケース2 foo@mail.hoge.mydns.jp 宛の場合


① foo@mail.hoge.mydns.jp 宛にメールを送る。

② DNSサーバがMXレコードを参照して、メールサーバのFQDNを調べる。

 ③-A MXレコードに[mail.hoge.mydns.jp]と記載していた場合

  ケース1と同じ

 ③-B MXレコードに[mail]と記載していた場合

  Aレコードを参照するが、FQDNが[mail]は見つからないので、配送できない。

④ MXレコードからの参照とは別に、Aレコードを参照。
  @以下(mail.hoge.mydns.jp)と一致するAレコードが見つかり、指定のIPアドレスへ配送される。


ケース3 MXレコードを未指定(自動補完)の場合

① MXレコードには、ドメイン名(hoge.mydns.jp)が記述される。

② ドメイン名は、IPアドレスに紐付けられている。

② foo@hoge.mydns.jp宛のメールは、ドメイン名と紐付けられているIPアドレスへ配送される。
 (Aレコード未記載でも届くので、Aレコードは参照されていない?)
 (foo@XXX.hoge.mydns.jp 宛のメールは、Aレコードにホスト名XXXが記録されていれば届く。)



あくまで推測です。













【CentOS6.5】@myhostname宛のメールは受信できるが、@mydomain宛のメールが受信できない その①

現在、メールサーバの再構築中。

昨年夏にメールサーバをつくった時のメモ書きが残っているので、それに従えば概ねうまくいっている。

それでも、思いがけないトラブルが現れるもので、表題の通り

@myhostname宛のメールは受信できるが、@mydomain宛のメールが受信できない

という状況に陥った。

詳しい状況は次のとおりだ。

使っているソフトは、
postfix : 2.6.6
dovecot : 2.0.9

ドメイン名についてはmydnsを使っていて、下記の例の用に設定している。

domain : hoge.mydns.jp
hostname : mail.hoge.mydns.jp

既存の他のメールアドレスから新規メールを送信したとき、

foo@mail.hoge.mydns.jp ⇒ 届く ◯
foo@hoge.mydns.jp ⇒ 届かない ✕

という状況だ。
この状況で一番考えられそうなのは、

postfix の /etc/postfix/main.cf 内の設定項目 mydestination の設定を間違っていることだ。

しかし、

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain

としていて、この設定には問題無い。

送信元の MAILER-DAEMON から返ってきたメッセージを見てみる。

(一部抜粋)
=====
<foo@hoge.mydns.jp>: host mail[xxx.xxx.xxx.xxx] said: 554 5.4.0
    Error: too many hops (in reply to end of DATA command)
=====

中継が多すぎるとの事で、ちゃんと配送されずに、どっかで堂々巡りになっている?ようだ。

mydns の設定がまずくて、ちゃんと名前解決されていないという可能性も考えたが、mydnsの設定はややこしいものではないし、前回、上手くいっていた時と同様に設定できたいたので、サーバー内のソフトやネットワークの設定ファイルの見直しにとりかかった。

そしてドハマりした。

続く