Mail Docs
Mail Docsについて
概要:
メールについて、調べた記録である。
目的
メールを理解する。
- どんなことができるのか。
- どのような設定が必要なのか
- しくみ上、どこが脆弱なのか。
を理解する。
環境
- AlmaLinux release 9.7 (Moss Jungle Cat)
- Vagrant 2.4.9
- host: AlmaLinux release 10.1 (Heliotrope Lion)
その他
メールサーバーは、運用難易度が非常に高いため、安易な覚悟でデプロイ出来ない。
管理レポジトリー
GitHub - YumaYX/maildocs: mail · GitHub
02-Mail_Servers
メールサーバーの構成と用語整理
メールサーバーの構成を調査する。
メールは、世界中のMTAサーバーが繋がっており、送信者から、受信者へ配送される。
サーバーサイド
- MTA(Mail Transfer Agent)
- メールの転送経路を決定する
sendmailやqmail、Postfixなど
- MDA(Mail Delivery Agent)
- メールを配送(転送)する
- MTAのソフトに、MDAの機能を内蔵している
- サーバー内のローカル配送には
procmailやmaildropなど
- MRA(Mail Retrieval Agent)
- POPやIMAPのメール受信のための部分
Dovecotなど
- MSA (Mail Submission Agent)
- メール提出/送信エージェント
- ユーザーのメーラー(MUA)から送られてきたメールを最初に受け取り、送信者の認証やスパム対策(SMTP-AUTHなど)を行って、配送先のサーバーへ渡す役目を持つサーバープログラムのこと
クライアントサイド
- MUA(Mail User Agent)
- ユーザーインターフェイスを提供
- Outlook, Thunderbirdなど
構成要素は、参考文献の図1 メールサーバの構成要素にて、わかりやすく解説されている。
参考文献
ASCII.jp:メールを受け取る仕組みはどうなっていますか?? (1/2)
送信、受信、転送、配送
MUAの送受信と、MTAの送受信は、用語を分けるべきではないか。
[MUA]
|
| submission
v
[MTA]
|
| relay
v
[相手MTA]
|
| delivery
v
[Mailbox]
|
| retrieve
v
[相手MUA]
05-Domain
ドメイン、MXレコードについて
ドメインのMXレコードは、電子メールの配送先であるメールサーバーを決定する際に使用するものである。
| record | domain |
|---|---|
| Aレコード | example.com |
| MXレコード | mail.example.com |
MXレコードの名前解決
MTAから、user@example.comにメールが送られる場合:
- メールアドレスのドメイン(example.com)でDNS問い合わせ
- MXレコードを取得(mail.example.com)
- MXレコードのドメイン名をDNS問い合わせ
- IPアドレスを取得した上で、SMTPなどの通信を行う。
MXレコードが登録されていない場合、Aレコードが使用されることがある(MXレコードとは?優先度と確認方法 | Proofpoint JP)。
メールアドレスのドメイン部をIPアドレスにできないか
RFC上は、可能として定義されている([]で指定する)が、そのように実装されないのが通常。
参考文献
【ドメイン】MXレコードの設定方法は?|ヘルプ | ドメイン取るならお名前.com
06-Port
使用プロトコル・ポート一覧
| プロトコル | 暗号化 | ポート番号 |
|---|---|---|
| SMTP (Simple Mail Transfer Protocol) | 平文 | 25 |
| SMTP (Simple Mail Transfer Protocol) | SSL | 465 |
| サブミッションポート(SMTP認証用) | STARTTLS(またはTLS) | 587 |
| POP3 (Post Office Protocol version 3) | 平文 | 110 |
| POP3 (Post Office Protocol version 3) | SSL | 995 |
| IMAP4 (Internet Message Access Protocol 4) | 平文 | 143 |
| IMAP4 (Internet Message Access Protocol 4) | SSL | 993 |
SSLについて:現在はTLSが必須とされている。
暗号化について
このSMTPSやPOP3S/IMAP4Sを利用した場合に暗号化通信で保護される範囲については、しっかり認識しておく必要がある。なぜなら、この技術ではユーザーのPCとメールサーバ間の区間はSSL通信で保護されているが、メールサーバ間、メールサーバと宛先ユーザー間の通信を暗号化するものではないからだ。
メールサーバー間でも暗号化するものではないため、インターネットで平文で流れている可能性はあるということ。
その他に、PGP、S/MIMEがある。https://note.com/whale999_/n/nedf6ab4501c0にまとめられている。
参考文献
- ASCII.jp:メールを受け取る仕組みはどうなっていますか?? (2/2)
- SSLとは - IT用語辞典 e-Words
- docomo Solutions PLUS | セキュリティーQ&A「SSL」「TLS」にかかわる脆弱性にどう対処する?
- The GNU Privacy Guard
- 危険な現状 | 日経クロステック(xTECH)
10-Software
本稿で扱うソフトウェア
以下のソフトウェアを動作させる。
- sendmail
- procmail
- dovecot
検証用の環境について
- プログラムの動作確認は、Vagrantで行う。コンフィグファイル修正は、基本的にsedで行う。
- Vagrantの挙動として、共通SHELLの後に、個別SHELLが打鍵される。複数サーバーがあるので、前後する可能性がある。
- DNSサーバーは構築しない。
実装目標
- メール送信
- server1 -SMTP-> server2 -SMTP-> server1
- メールはユーザーのホーム下Maildir/{new, cur, tmp}に保存するようにする。
- メール受信
- ファイルではなく、プロトコルを使ってメールを確認できること。
- 接続の暗号化は無し。
実装パラメーター
- 172.17.64.100
- hostname server1.local
- mail: vagrant at server1
- 172.17.64.101
- hostname server2.local
- mail: vagrant at server2
11-Sendmail
Sendmail
本稿では、Sendmailを使用する。
2026/5時点で、RHELからSendmailの使用は非推奨となっているため、本番環境では使用出来ない。
Sendmail:古くからある標準的なMTAで、柔軟性が高い反面、設定が難解 Postfix:Sendmail互換でありながら、セキュリティと性能が向上しており、設定が簡潔
https://blog.serverspt.com/detail/39より。
install
sudo dnf -y install sendmail m4 sendmail-cf
# 8.16.1-11.el9
# systemctl enable --now sendmail
sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# サービス停止起動では、regenerateされない。
sudo systemctl restart sendmail
setting
/etc/mail/sendmail.mc
dnl:Delete to New Lineなので、dnlはコメント行
smtp受付ネットワーク範囲設定
有効行の場合、localhostのみ。なしor無効行の場合、全リッスン。
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
# 先頭にdnlをつけてコメントにする。
sudo sed -i 's@^DAEMON_OPTIONS(@dnl DAEMON_OPTIONS(@g' /etc/mail/sendmail.mc
/etc/mail/access
メール転送の中継を制御(許可や拒否)する設定ファイル。
Connect: 受信メールの接続を開始したリモートシステムのIPアドレスを、条件テストと照合 (connection information ${client_addr}, ${client_name})) To: メッセージエンベロープの受信者アドレス(Envelop の RCPT TO の部分)を、条件テストと照合 (envelop recipient) From: メッセージエンベロープの送信者アドレス(Envelop の MAIL FROM の部分)を、条件テストと照合 (envelop sender)
OK: 他のルールにより拒否されるメールでもacceptする RELAY: リレーを許可する (trasmission of messages from a site outside your host (class{w}) to another site except yours) REJECT: 拒否する
# /はor。実際には、ひとつずつ選択する。
Connect/To/From:domain OK/RELAY/REJECT
- server1.local から接続してきたクライアントにはリレーを許可する
- /etc/mail/access.dbを手動で生成する必要はなかった。sendmailを再起動しているから?
- server1より、connect:server1.local realyは動作した。to:server1は動作しなかった。
- server2からメールを送ると、メールが送られる。他の設定に要因がありそう。
/etc/mail/local-host-names
server1側:
メール受け取りドメイン設定コンフィグ。
sudo cat <<'LHN' | sudo tee /etc/mail/local-host-names
server1
LHN
/etc/mail/mailertable
server2側:
特定ドメイン宛てのメールの配送先や配送方法(メーラ)を制御するためのルーティングテーブル。
今回はDNS不使用、MXレコードが使えないため、設定が必要となる。
cat <<'EOF' | sudo tee /etc/mail/mailertable
server1 esmtp:[172.17.64.100]
EOF
メール送信
sudo dnf -y install telnet nc
{
echo "HELO server1"
echo "MAIL FROM:<vagrant@server2>"
echo "RCPT TO:<vagrant@server1>"
echo "DATA"
echo "Subject: this is a testmail ABC"
echo ""
echo "this is a testmail EFG"
echo "."
echo "QUIT"
} | nc server2 25
12-Procmail
Procmail
install
Sendmailインストール時に、一緒にインストールされる。
#確認方法
rpm -qa procmail
grep 'local_procmail' /etc/mail/sendmail.mc
setting
Sendmail with Maildirにあるとおり、
/etc/procmailrc または maildroprcでDEFAULT=$HOME/Maildir/と書いておけばいい(procmail も maildrop も同じ)。イヤミったらしくダラダラと書いてきたが、実際におこなうべき作業はたったのこれだけである。難しいことは何もない。
/etc/procmailrcを作成する。
cat <<'PROCMAILEOF' | tee /etc/procmailrc
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$HOME/procmail.log
VERBOSE=on
PROCMAILEOF
詳細は各自。
13-Dovecot
Dovecot
受信側を設定する。受信側といっても、サーバーでは受信しており、クライアントからメールを引っ張ってくるだけの話。
install
dnf -y install dovecot
setting
プロトコル設定
sed -i 's/^#protocols/protocols/g' /etc/dovecot/dovecot.conf
Mailbox
procmailに合わせる(~/Maildir)。
sed -i 's@^# mail_location = maildir@ mail_location = maildir@g' /etc/dovecot/conf.d/10-mail.conf
暗号化
証明書など無いので、一部設定を変える。
sed -i 's@^ssl = required@ssl = no@g' /etc/dovecot/conf.d/10-ssl.conf
最後に再起動
systemctl restart dovecot
クライアント側から接続確認 => POP3:110で接続する。
{
echo USER vagrant
echo PASS vagrant
echo LIST
echo QUIT
} | nc localhost 110
- Q. なぜ接続情報がわかるのか?
- A. /etc/dovecot/conf.d/に、PAMで認証する設定があるので、そこで判断できる。
- ちなみにユーザー
vagrantには、初期パスワードは設定されていない。
結果
server1: ####### MAILDIR #######
server1: +OK Dovecot ready.
server1: +OK
server1: +OK Logged in.
server1: +OK 1 messages:
server1: 1 652
server1: .
server1: +OK 652 octets
server1: Return-Path: <vagrant@server2.local>
server1: Received: from server2.local (server2.local [172.17.64.101])
server1: by server1.local (8.16.1/8.16.1) with ESMTPS id 64H6uAJL006512
server1: (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
server1: for <vagrant@server1.local>; Sun, 17 May 2026 06:56:10 GMT
server1: Received: from server1 (server1.local [172.17.64.100])
server1: by server2.local (8.16.1/8.16.1) with SMTP id 64H6uADp006402
server1: for <vagrant@server1>; Sun, 17 May 2026 06:56:10 GMT
server1: Date: Sun, 17 May 2026 06:56:10 GMT
server1: From: vagrant@server2.local
server1: Message-Id: <202605170656.64H6uADp006402@server2.local>
server1: Subject: this is a testmail ABC
server1:
server1: this is a testmail EFG
server1: .
server1: +OK Logging out.
14-Mail_Result
メール送信記録確認
telnetでの打鍵がメールにどのように反映されているか、確認する。コマンドなどは既出のものを使用する。
送信
- フロー:
server1(Client)=>server2(SMTP Server)=>server1(SMTP Server) server2:25に接続。telnetにて、メール送信。
[vagrant@server1 ~]$ telnet server2 25
Trying 172.17.64.101...
Connected to server2.
Escape character is '^]'.
220 server2.local ESMTP Sendmail 8.16.1/8.16.1; Wed, 20 May 2026 13:13:34 GMT
HELO server1
250 server2.local Hello server1.local [172.17.64.100], pleased to meet you
MAIL FROM:<vagrant@server2>
250 2.1.0 <vagrant@server2>... Sender ok
RCPT TO:<vagrant@server1>
250 2.1.5 <vagrant@server1>... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
Subject: this is a testmail ABC
this is a testmail EFG
.
250 2.0.0 64KDDYBB006414 Message accepted for delivery
QUIT
221 2.0.0 server2.local closing connection
Connection closed by foreign host.
[vagrant@server1 ~]$
下のリファレンス通りのリターンコードとなっている。
リターンコード
正常
| code | description |
|---|---|
| 220 | サービス開始 |
| 221 | サービス終了 |
| 250 | 要求処理完了 |
| 354 | データ入力開始(.だけの行で入力完了) |
電子メール<アプリケーションプロトコル<ネットワーク<Web教材<木暮仁より。
結果
[vagrant@server1 ~]$ cat Maildir/new/1779282857.6584_0.server1.local
Return-Path: <vagrant@server2.local>
Received: from server2.local (server2.local [172.17.64.101])
by server1.local (8.16.1/8.16.1) with ESMTPS id 64KDEHgA006582
(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
for <vagrant@server1.local>; Wed, 20 May 2026 13:14:17 GMT
Received: from server1 (server1.local [172.17.64.100])
by server2.local (8.16.1/8.16.1) with SMTP id 64KDDYBB006414
for <vagrant@server1>; Wed, 20 May 2026 13:13:58 GMT
Date: Wed, 20 May 2026 13:13:34 GMT
From: vagrant@server2.local
Message-Id: <202605201313.64KDDYBB006414@server2.local>
Subject: this is a testmail ABC
this is a testmail EFG
[vagrant@server1 ~]$
Return-Path- メールが宛先に届かなかった際のエラーメール(バウンスメール)の送信先を指定するメールヘッダー情報
- 自動で入っている、特に指定していない。
Received- Received: from 送信元ホスト名、IPアドレス
- by 受信(中継)サーバ名 with SMTPなどの転送方法 id 転送時のID番号
- for 宛先のメールアドレス; 処理時刻
ESMTPS:server2 → server1 の通信は TLS(暗号化あり)ESMTP + TLSで保護された通信を表す表示(ログ上の呼称)- 裏で、
HELOではなくEHLOが送信され、ESMTPが使用された。 - EHLOへの応答で
TLS対応できるのでSTARTTLSが使用されている。 - その結果、暗号化後のSMTP通信として
ESMTPSと記録されている - Port485の使用は、なかった。25のみ開放状態で、SMTPリレーされた。
verify=NOTにより、証明書検証なしということを示す。
- toとかccは表示されていないが、記載がないと、スパム判定の可能性などがあり得る。実務では付与する。
Reference
DNS SPFレコード
メール専用として上で、説明した用途で使われる。リスト化した一種のDNS TXTレコード。
Reference
15-Reference1
References 1
- エンベロープFromとは?ヘッダーFromやエンベロープToとの違いや確認方法を解説 | 【公式】ブラストエンジン(blastengine)|API連携・SMTPリレー
- 電子メール<アプリケーションプロトコル<ネットワーク<Web教材<木暮仁
- 【にわか】SMTPの仕組みを独学したメモ切れ | ぽけ手帳
- 送信ドメイン認証(SPF / DKIM / DMARC)の仕組みと、なりすましメール対策への活用法を徹底解説 – エンタープライズIT [COLUMNS]
- なりすましメール対策(SPF、DKIM、DMARC、S/MIME、PGP)
前提となるヘッダー情報について
- エンベロープFROM
- メールが実際に送信された元のアドレス
- 誰がこのメールを送ったか
- エンベロープTO
- メールが実際に送られるべき最終的な受信者のアドレス
- ヘッダーTO
- メールの受信者を示す情報
- ヘッダーFROM
- 受信者が「誰からのメールか」を識別できるようにある。
- 通信にはエンベロープが使用され、人間にはヘッダー情報が使用されると考えればいい。
- なりすまし:ヘッダーFromに偽りの情報を記載し、受信者に信用させメールを開封させる
- つまり、もちろん、自動入力ではなく、書き換えも可能であるということ。
- エンベロープの情報はMTA(Message Transfer Agent)がメールサーバー上で自動的に設定される。
エンベロープ情報とヘッダー情報の内容が異なっている場合でも、メールの送信はできる。
通常の場合、メール作成者がエンベロープの情報を編集することはできません。一般的なメールサーバーのプログラムは、ヘッダーの情報をそのままエンベロープ情報として使用します。しかし、使用しているプログラムによってはヘッダーの情報を使用しないケースもあるようです。
エンベロープFromとは?ヘッダーFromやエンベロープToとの違いや確認方法を解説 | 【公式】ブラストエンジン(blastengine)|API連携・SMTPリレーより。
telnetでメールを作れば書き換えは可能ではないか、というところである。やはり、実装によるところがあるかもしれない。
Sendmail Config
参考文献
- 27.3. メール転送エージェント (MTA) | デプロイメントガイド | Red Hat Enterprise Linux | 5 | Red Hat Documentation
- Sendmail
587ポートの使用
submissionポートは587にする。
#sudo sed -i '/submit/ s/^dnl //' /etc/mail/sendmail.mc
sendmailがタイムアウトで、サービス自体アップしなかった。ログを確認すると、原因は、Dovecotで587 Submissionを使っていた。想定外だった。
sendmail.service: Can't open PID file /run/sendmail.pid (yet?) after start: Operation not permitted
NOQUEUE: SYSERR(root): opendaemonsocket: daemon MSA: cannot bind: Address already in use problem creating SMTP socket
しかし、dovecotの認証情報(OSのPAM)を使えるので、587でsubmissionを受けるのはあり。587はそのままdovecotで受ける。sendmailでは、587使用を諦める。
もちろん、諦めなくても、dovecotの587だけを停めてpam(sasl)認証を使えば、sendmail mtaでもmsaを動作させられる、らしい。この検証自体、無意味なのでこれ以上は検証しない。
MUAから25番が使われてしまうのを防ぎたい。→MTA側で、MTA(Relay)の接続、MUA(submmision)の接続の判断できないっぽいので、Firewallで制限するらしい(?)。
Reference
Submissionポートの適切な設定について : 迷惑メール対策委員会
構成の再検討
構成の再検討を行う。
[ MUA ]
|
| submission
v
[ MSA:587 -> MTA:25 ]
|
| relay, delivery
v
[ MTA:25 -> MailBox <- MRA:110 ]
^
| retrieve
|
[ MUA ]
設定
- 587 port開放
- user:vagrantのパスワードを設定
- /etc/dovecot/conf.d/10-auth.conf
auth_mechanisms = plain loginに変更- loginを追加
- /etc/dovecot/conf.d/10-ssl.conf
ssl = yesに変更- 必須ではなく、サポートに変更。
- /etc/dovecot/conf.d/10-master.conf
port = 587に変更 - /etc/dovecot/conf.d/20-submission.conf 以下追記
submission_relay_host = 127.0.0.1 submission_relay_port = 25 submission_relay_trusted = yes }}を削除- 波括弧外にrelay_host, portを追加しているが、無くてもいい。
- epel-releaseを追加して、swaksをインストール
- swaksでメールを送信
- TLS
- HELO & EHLO それぞれ2通サブミット
結果
server1: +OK Dovecot ready.
server1: +OK
server1: +OK Logged in.
server1: +OK 3 messages:
server1: 1 932
server1: 2 932
server1: 3 652
server1: .
server1: +OK 932 octets
server1: Return-Path: <vagrant@server1.local>
server1: Received: from server2.local (server2.local [172.17.64.101])
server1: by server1.local (8.16.1/8.16.1) with ESMTPS id 64RG188r008623
server1: (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
server1: for <vagrant@server1.local>; Wed, 27 May 2026 16:01:08 GMT
server1: Received: from server2.local (localhost [127.0.0.1])
server1: by server2.local (8.16.1/8.16.1) with ESMTP id 64RG18d7006875
server1: for <vagrant@server1>; Wed, 27 May 2026 16:01:08 GMT
server1: Received: from server1 ([172.17.64.100])
server1: by server2.local with ESMTPSA
server1: id T4u/IkQVF2raGgAAk97zeA
server1: (envelope-from <vagrant@server1>)
server1: for <vagrant@server1>; Wed, 27 May 2026 16:01:08 +0000
server1: Date: Wed, 27 May 2026 16:01:08 +0000
server1: To: vagrant@server1.local
server1: From: vagrant@server1.local
server1: Subject: test Wed, 27 May 2026 16:01:08 +0000
server1: Message-Id: <20260527160108.008292@>
server1: X-Mailer: swaks v20240103.0 jetmore.org/john/code/swaks/
server1:
server1: This is a test mailing
server1:
server1:
server1: .
server1: +OK 932 octets
server1: Return-Path: <vagrant@server1.local>
server1: Received: from server2.local (server2.local [172.17.64.101])
server1: by server1.local (8.16.1/8.16.1) with ESMTPS id 64RG18VE008626
server1: (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
server1: for <vagrant@server1.local>; Wed, 27 May 2026 16:01:09 GMT
server1: Received: from server2.local (localhost [127.0.0.1])
server1: by server2.local (8.16.1/8.16.1) with ESMTP id 64RG18WU006883
server1: for <vagrant@server1>; Wed, 27 May 2026 16:01:08 GMT
server1: Received: from server1 ([172.17.64.100])
server1: by server2.local with ESMTPSA
server1: id gwqZOEQVF2riGgAAk97zeA
server1: (envelope-from <vagrant@server1>)
server1: for <vagrant@server1>; Wed, 27 May 2026 16:01:08 +0000
server1: Date: Wed, 27 May 2026 16:01:08 +0000
server1: To: vagrant@server1.local
server1: From: vagrant@server1.local
server1: Subject: test Wed, 27 May 2026 16:01:08 +0000
server1: Message-Id: <20260527160108.008622@>
server1: X-Mailer: swaks v20240103.0 jetmore.org/john/code/swaks/
server1:
server1: This is a test mailing
server1:
server1:
server1: .
server1: +OK 652 octets
server1: Return-Path: <vagrant@server1.local>
server1: Received: from server2.local (server2.local [172.17.64.101])
server1: by server1.local (8.16.1/8.16.1) with ESMTPS id 64RG1Eki008633
server1: (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
server1: for <vagrant@server1.local>; Wed, 27 May 2026 16:01:14 GMT
server1: Received: from server1 (server1.local [172.17.64.100])
server1: by server2.local (8.16.1/8.16.1) with SMTP id 64RG1EVQ006886
server1: for <vagrant@server1>; Wed, 27 May 2026 16:01:14 GMT
server1: Date: Wed, 27 May 2026 16:01:14 GMT
server1: From: vagrant@server1.local
server1: Message-Id: <202605271601.64RG1EVQ006886@server2.local>
server1: Subject: this is a testmail ABC
server1:
server1: this is a testmail EFG
server1: .
server1: +OK Logging out.
- retrieveの110は今後検討する。
- そもそも感があるが、sendmail使用自体が。。
- Private IP addressがはいるのが嫌なら、milterでマスク、置換できる。
sendmail config files
- /etc/mail/access
- MTAリレーの許可を記載するファイル
- /etc/mail/aliasesdb-stamp
- /etc/mail/domaintable
- ドメイン名そのものを別ドメインに書き換えるための設定
- ドメイン移転、複数ドメインの統合など、引越しの時に使われる。
- /etc/mail/helpfile
- SMTPのHELPコマンドに対してサーバーが返す応答内容を記録したテキストファイル
- /etc/mail/local-host-names
- 受信デリバリーするドメインを登録するファイル
- /etc/mail/mailertable
- どのメールをどの配送方法(ルート)で送るか」を制御する設定
- ドメイン単位・経路単位の“配送ルーティング表“
- /etc/mail/sendmail.mc
- Sendmailのコンフィグファイル
- /etc/mail/submit.mc
- ローカルから送信されるメール(submitd経由)の動作を定義する設定ファイル
- /etc/mail/trusted-users
- /etc/mail/virtusertable
- 受信したメールの「宛先アドレス」を別のユーザーや外部アドレスに転送するための設定ファイル
- /etc/aliases
- メールアドレスのエイリアス(別名)を設定するファイル
- ローカルマシン内のユーザー名・エイリアスを別宛先へ転送する仕組み
- make
- /etc/mail/make
- /etc/mail/Makefile
- db
- /etc/mail/access.db
- /etc/mail/domaintable.db
- /etc/mail/mailertable.db
- /etc/mail/virtusertable.db
- cf
- /etc/mail/sendmail.cf
- /etc/mail/submit.cf
Reference
Sendmailの設定ファイル解説:サーバ設定情報の確認方法と設定例
20-Email_Spoofing_Protection
なりすましメール防止策
SPF
SPF(Sender Policy Framework):メール送信元のドメイン名とIPアドレスを照合する。 SPFはメール転送等により受信側で正しく判断できない場合もあるSPF(Sender Policy Framework) : 迷惑メール対策委員会。
送信ドメイン認証(SPF / DKIM / DMARC)の仕組みと、なりすましメール対策への活用法を徹底解説 – エンタープライズIT [COLUMNS]より。
送信側
メール使用時に利用するサーバーのIPアドレスをDNSのSPFレコードとして事前に登録
受信側
メール受信時に送信側のSPFレコードと照合
送信元IPアドレスは、グローバルIPアドレスが基本。送信元組織の出口のグローバルIPアドレスらしい、図からも読み取れる。
DKIM
DKIM(DomainKeys Identified Mail):電子署名を利用してメール送信元が詐称されていないかどうかを確認する。
- メールサーバーに、秘密鍵
- MTAで、電子署名化
- DNSサーバーに、公開鍵
送信側(MTA)が署名して、受信者(MTA)がDNSの鍵から、検証する。
DMARC
これはSPFやDKIMの認証が失敗した場合の対応策を定めたもの。送信側は受信側の認証失敗時の推奨アクションをDNSに「DMARCポリシー」として宣言しておき、受信側は認証失敗時にこのDMARCポリシーを参照して、受信メールをどう扱うか判断します
定義されているDMARCポリシーによって、受け取るか、隔離するか、拒否するかなど、分岐できる。
Reference
送信ドメイン認証(SPF / DKIM / DMARC)の仕組みと、なりすましメール対策への活用法を徹底解説 – エンタープライズIT [COLUMNS]
おまけ1
S/MIMEとDKIMは何が違う?
- S/MIME: Secure / Multipurpose Internet Mail Extensions
- 公開鍵の正当性は CA(認証局)が署名することで保証される。
- MUA(Outlookや、Thunderbird)上で設定する。
| 項目 | S/MIME | DKIM |
|---|---|---|
| 主目的 | 内容の保護 | 送信元の証明 |
| 暗号化 | できる | しない |
| 使う場所 | MUAメールクライアント間 | MTAメールサーバー間 |
S/MIMEとは?メールへの電子署名と暗号化の仕組み|GMOグローバルサイン【公式】
おまけ2
2024年に、大手電子メールプロバイダーのGoogle、Yahooはセキュリティ対策の導入を義務付けている。
Reference
- より安全で迷惑メールの少ない受信トレイを実現する新しい Gmail のポリシーについて
- 【2026年の最新情報あり】2024年2月に改訂されたGmail送信者ガイドラインについて | エンバーポイント株式会社

