Help us understand the problem. What is going on with this article?

sendmailで送信元ドメインのCNAME変換を抑止する

More than 3 years have passed since last update.

はじめに

Webサービスを提供するドメインのサーバからメールを送信する際、送信元のドメイン名をWebサービスのものと同じものを利用したいという状況がある。例えばsitename.comのサイトからnoreply@sitename.comでメールを送信したいという感じだ。なおこのときsitename.comにはメールサーバは存在せずよってMXレコードも存在しない。

この際sitename.comがCNAMEだった場合、sendmailはCNAMEを本来の名前に変換してからメールを転送する。この仕様はRFCで決められているようだが(ソース未確認)、sendmailではこの変換を抑止する設定が行える。抑止の設定を以下に記載する。

設定方法

バージョン確認

今回の設定はv8.7以上のsendmailで有効。

# cat /etc/issue
Amazon Linux AMI release 2017.03
Kernel \r on an \m

# /usr/sbin/sendmail -d0.101
Version 8.14.4

設定ファイルの更新

# vim /etc/mail/sendmail.mc
以下の設定を追加
define(`confDONT_EXPAND_CNAMES',`True')dnl

設定ファイルの更新(自動書き換え)

sendmailの設定ファイルのsendmail.cfはsendmail再起動時にsendmail.mcの設定に基づき上書きされる為、事前にバックアップする。

# cp -p /etc/mail/sendmail.cf{,_bak}

# service sendmail restart
Shutting down sm-client:                                   [  OK  ]
Shutting down sendmail:                                    [  OK  ]
Package sendmail-cf is required to update configuration.   [WARNING]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]

cfファイルを更新する為のパッケージが必要のようなのでインストール。

# yum list | grep sendmail
https://sensu.global.ssl.fastly.net/yum/latest/x86_64/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
Trying other mirror.
To address this issue please refer to the below knowledge base article

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.

sendmail.x86_64                       8.14.4-9.14.amzn1             @amzn-main
sendmail-cf.x86_64                    8.14.4-9.14.amzn1             amzn-main
sendmail-devel.x86_64                 8.14.4-9.14.amzn1             amzn-main
sendmail-doc.noarch                   8.14.4-9.14.amzn1             amzn-main
sendmail-milter.i686                  8.14.4-9.14.amzn1             amzn-main
sendmail-milter.x86_64                8.14.4-9.14.amzn1             amzn-main
# yum install sendmail-cf
…
Installed:
  sendmail-cf.x86_64 0:8.14.4-9.14.amzn1

Complete!

sendmailを再起動し、設定ファイルの書き換えを確認。

# service sendmail restart
Shutting down sm-client:                                   [  OK  ]
Shutting down sendmail:                                    [  OK  ]
Starting sendmail:                                         [  OK  ]
Starting sm-client:                                        [  OK  ]

# diff /etc/mail/sendmail.cf{,_bak}
19,22d18
< ##### built by root@ip-10-0-0-160 on Tue Jul 25 12:13:01 JST 2017
< ##### in /etc/mail
< ##### using /usr/share/sendmail-cf/ as configuration include directory
< #####
442c438
< O DontExpandCnames=True
---
> #O DontExpandCnames=False

おわりに

上記の設定でCNAMEのドメインをそのまま送信元のドメインとして利用できた。
ただしこの設定は推奨されているものではなさそうなので、本来どうあるべきかは別と調査が必要。
gmailでこのサーバよりメールを受け取ると、「本当にsitename.comから送信されたものか確認できませんでした」という怪しげなメッセージが表示されるのも気になるところ。(スパムとは判断されていないが)

参考

RFC関連

http://www.soi.wide.ad.jp/class/20040031/slides/03/5.html

バージョン確認

http://qiita.com/maru3/items/9cdae8cc2593b664d42e

sendmail関連

http://www.postfix-jp.info/origdocs/cf-compat.html
http://etutorials.org/Server+Administration/Sendmail/Part+III+The+Configuration+File/Chapter+24.+The+O+Options+Configuration+Command/DontExpandCnames/
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-email-mta-sendmail.html
http://jlug.ml.users.narkive.com/hPYHESjp/sendmail
http://network.station.ez-net.jp/server/mail/sendmail/relay.asp

postfix関連

http://www.postfix-jp.info/origdocs/cf-compat.html

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away