メインコンテンツにスキップ

メール送信と配信確認を成功させるためのチェックリスト

今後の確認には、以下のソフトウェアが必要です:

  • Host ユーティリティ

    • Debian/Ubuntuapt-get install bind9-host
    • CentOSyum install bind9-host
  • Telnet ユーティリティ

    • Debian/Ubuntuapt-get install telnet
    • CentOSyum install telnet

MX レコード

MX レコードは、SMTP プロトコルを使用するメールサーバーを登録するために設計された DNS レコードの一種です。 このレコードは、送信者のメールエージェントがメールを配信すべきサーバーを決定する役割を持ちます。 1 つのドメインには、優先度の異なる複数のレコードタイプが存在する場合があります。

host コマンドを使用すると、メールがローカルで動作しているのか、サードパーティのメールサーバーを使用しているのかを確認できます:

host -t MX example.com

ローカルのメールサーバーを使用している場合、出力は次のように表示されます:

example.com のメールは 10 mail.example.com で処理されます。

mail.example.com のエントリは、別のサーバーを指すこともあります。 さらに、mail.example.com は、メール送信元サーバーを指す既存の A レコードでなければならない点にも注意が必要です。

確認のために、次のコマンドも実行できます:

host example.com
host mail.example.com

そして、プライマリドメイン、この場合は example.commail.example.com が向いている IP アドレスを比較してください。

重要

メールサーバーがメールを受信できるようにするには、MX レコードの設定が必要です。

MX レコードの例:

Name: example.com。
Type: MX
Value: mail.example.com。
Priority: 10

DKIM 署名

FASTPANEL® では、management menu → 「Mail」セクションで、必要なメールドメインの前にある「DKIM」をクリックすると DKIM 署名を取得できます

FASTPANEL で DKIM を有効化

DNS 側では、レコードを次のように追加する必要があります:

Name: dkim._domainkey
Type: TXT
Value: v=DKIM1; k=rsa; p=public_key

以下は正しい DKIM レコードの例です

dkim._domainkey TXT v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpbBQ0T2xO3/SwziunIC/IFbsxBRub6WXiu8Kc2w7uB4GVw+SAB5wSEslDJbFXQRbdV9i/Duu8EQ9xik8dbqdLVyP4iAtw34g4j6QWKcfocgK4hEkwlPFff1dzUlNQONh2riNE5KVJXuWcizm8hub7nPnl36e7OnxiL0qIU7tT1QIDAQAB

DKIM の詳細については、https://wikipedia.org/wiki/DomainKeys_Identified_Mail を参照してください

SPF レコード

SPF レコードが存在するかどうかは、host コマンドを実行して確認できます。 この場合、コマンドは次のようになります:

host -t TXT example.com

出力は次のようになります:

example.com descriptive text "v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all"

このエントリには ipv6 が含まれない場合があることに注意してください。 この場合、SPF 署名は次のようになります:

example.com descriptive text "v=spf1 ip4:ipv4_of_your_server a mx ~all"

注記

SPF レコードは 1 つだけでなければならないことに注意する必要があります

DNS 側では、レコードを次のように追加する必要があります:

Name: example.com。
Type: TXT
Value:
v=spf1 ip4:ipv4_of_your_server ip6:ipv6_of_your_server a mx ~all
または(ipv6 を使用していない場合)
v=spf1 ip4:ipv4_of_your_server a mx ~all

例:

example.com TXT v=spf1 ip4:1.2.3.4 a mx ~all

SPF の詳細については、https://wikipedia.org/wiki/Sender_Policy_Framework を参照してください

DMARC レコード

ほとんどの場合、DMARC レコードの値は同じです。

DNS 側では、レコードを次のように追加する必要があります:

Name: _dmarc
Type: TXT
Value: v=DMARC1; p=none

例:

_dmarc.example.com。 TXT v=DMARC1; p=none

DMARC の詳細については、https://wikipedia.org/wiki/DMARC を参照してください

PTR レコードとサーバーのホスト名

PTR レコードは、IP アドレスを名前に変換する逆引き DNS レコードです。 メールサーバーにおけるこのレコードの主な目的は、大半のスパムを排除することです。 このレコードにより、メールの送信元ホスト名を特定できます。 一般的に、PTR レコードにはサーバー上で使用されているドメイン名が含まれます。

PTR レコードは ip-address をホスト名に関連付けます。 PTR レコードが正しく設定されていない場合、メールは拒否され、宛先に届きません。

ホスト名はサーバーを指す実際のドメイン名として指定し、PTR はそのドメインを指すようにする必要があります。そのドメインはさらにサーバーを指している必要があります。

たとえば、サーバー上に example.com というドメインがあるとします。

次のコマンドを実行すると:

host example.com

次のような出力が得られます:

example.com にはアドレス 1.2.3.4 があります
example.com のメールは 10 mail.example.com で処理されます。

問題を回避するため、ホスト名と PTR レコードは、既存の第 2 レベルのサブドメイン、たとえば mail.example.com として設定することをお勧めします

SMTP ポートの可用性

一部のホスティングプロバイダーでは、メールの送受信に使用されるポートの利用が制限されています。 メールサービスで使用されるポートは、25、587、465、143、993 です。

これらのポートの可用性を確認する最も簡単な方法の 1 つは、telnet コマンドを使用することです。

サードパーティサーバーからの受信接続を確認するには

次のコマンドを実行します:

telnet ip_adress port

たとえば、1.2.3.4 の 25 番ポートに telnet 接続を試みる場合、実行するコマンドは次のとおりです:

telnet 1.2.3.4 25

接続が成功すると、次のような出力が表示されます:

1.2.3.4 に接続を試みています…
1.2.3.4 に接続しました。
エスケープ文字は '^]' です。

接続に失敗した場合、出力は次のようになります:

1.2.3.4 に接続しています …
ポート some_port でホストへの接続を開けませんでした: 接続に失敗しました

または:

telnet: リモートホストに接続できません: 接続がタイムアウトしました

送信接続の場合

サーバーから、次のコマンドを実行します:

telnet smtp.gmail.com 25

接続が成功すると、次のような出力が表示されます:

2a00:1450:4010:c0b::6c に接続を試みています…
smtp.gmail.com に接続しました。
エスケープ文字は '^]' です。
220 smtp.gmail.com ESMTP j6-20020ac25506000000b004b53eb60e3csm1066162lfk.256 - gsmtp

クラウドホスティングを使用していて、SMTP サーバーに 25 番ポートを使用している場合、多くのホスティングプロバイダーはデフォルトで送信接続の 25 番ポートをブロックしている可能性が高いことに注意してください。 以下に、この問題の解決方法に関する説明へのリンクを示します:

ホスティングプロバイダーによるポートブロックに加えて、サーバー上のポートが閉じられていないかも確認する必要があります。 例として、FASTPANEL コントロールパネルでファイアウォールとして機能する iptables を取り上げます。 特定のポート、この場合は 25 に対するルールがあるかを確認するコマンドは次のとおりです:

iptables-save | grep 25

確認したいポートに対するルールがない場合、情報は表示されません。 メールサービスのポートをブロックするルールがある場合は、次のコマンドでこのルールを削除する必要があります:

iptables -D rule chain

たとえば、コマンドを実行して、次の内容が見つかったとします:

iptables-save | grep 25

-A INPUT -p tcp -m tcp --dport 25 -j DROP

このルールは、25 番ポート経由でサーバーへアクセスすることを一切許可しないため、メール送信ができなくなります

ルールを削除するには、次のコマンドを使用します:

iptables -D INPUT -p tcp -m tcp --dport 25 -j DROP

このコマンド例により、メール送信に使用されるすべてのポートを確認できます

メール送信に対する IPv6 の影響

メールサービスで ipv6 を使用する必要がある場合、まず ipv6 に PTR レコードがあるか、またメールサービスが特定のポートで ipv6 をリッスンしているかを確認する必要があります。

確認は次のコマンドで行えます:

netstat -nltpp | grep tcp6

このコマンドの出力結果は、ipv6 を使用しているすべてのサービスの一覧となり、その中からメールサービスがこのアドレスを使用しているかどうかを確認できます。 残念ながら、現在では、すべての設定を正しく行っていても ipv6 の使用が正常に機能しない場合があります。

メールサービスのログを確認してエラーが ipv6 に関連しており、設定全体が正しいことが分かった場合は、メールサービスでの ipv6 の使用を無効にできます。

Exim4 の例では、ipv6 の無効化は次のようになります:

  1. 次のコマンドで、サービスが ipv6 アドレスを使用しているか確認します

    netstat -nltp | grep exim

    exim で ipv6 アドレスが使用されているか確認

  2. 設定ファイル /etc/exim4/exim4.conf.template で、次の行をファイルの先頭に追加する必要があります:

    disable_ipv6=true

  3. ファイルに変更を保存し、その後次のようなコマンドでサービスを再起動します:

    systemctl restart exim4
  4. 次のコマンドを実行します:

    netstat -nltp | grep exim

    サービスが一覧に表示されなくなったことを確認します

    exim で ipv6 が無効になっているか確認

サードパーティサービスを使用してメール送信を確認する

上記のすべての項目を確認した後、サードパーティのリソースを使用してサーバーからのメール送信を確認できます。

最も便利で情報量の多いサービスの 1 つが https://www.mail-tester.com です

これを使用すると、メールの現在の評価を確認し、上記の設定データが正しいかどうかの情報を取得できるほか、評価を改善するための推奨事項も得られます。

これを行うには、サイトに表示されているアドレスにメールを送信し、その後「"Then check your score"」をクリックするだけです。

mail-tester でメールをテストする