ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
SMTP とは
SMTP (Simple Mail Transfer Protocol) は、メールクライアントからメールサーバへ、またメールサーバ間でメールを送信するためのテキストベースのプロトコルです。1982 年に RFC 821 で規定され、現在は RFC 5321 が標準。受信側は POP3 / IMAP を使い、SMTP は送信専用です。
SMTP のポート
| ポート | 用途 | 暗号化 | 認証 |
|---|---|---|---|
| 25 | サーバ間転送 (MTA-to-MTA) | 平文 (STARTTLS で昇格可) | 不要 (匿名) |
| 587 | Submission (クライアント送信) | STARTTLS で TLS 化 | SMTP-AUTH 必須 |
| 465 | SMTPS (Implicit TLS) | 接続開始から TLS | SMTP-AUTH 必須 |
| 2525 | 非標準 (代替 Submission) | STARTTLS | SMTP-AUTH |
日本の ISP の多くはOP25B (Outbound Port 25 Blocking) で、家庭回線からの 25 番ポート送信を遮断しています。家庭・モバイル回線からのメール送信は 587 / 465 を使う必要があります。
SMTP の対話例 (telnet)
$ telnet smtp.example.com 25
Trying 192.0.2.10...
Connected to smtp.example.com.
220 smtp.example.com ESMTP Postfix
EHLO myclient.example.org
250-smtp.example.com Hello myclient.example.org
250-PIPELINING
250-SIZE 10485760
250-STARTTLS
250-AUTH PLAIN LOGIN CRAM-MD5
250 HELP
MAIL FROM:<alice@example.org>
250 2.1.0 Ok
RCPT TO:<bob@example.com>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
From: Alice <alice@example.org>
To: Bob <bob@example.com>
Subject: Hello
This is the body of the message.
.
250 2.0.0 Ok: queued as 4ABCD1234
QUIT
221 2.0.0 Bye
SMTP 応答コード
| コード | 分類 | 意味と例 |
|---|---|---|
| 2xx | 成功 | 250 OK / 220 Service ready / 221 Bye |
| 3xx | 追加情報要求 | 354 Start mail input |
| 4xx | 一時エラー (再送 OK) | 421 Service not available / 451 Local error / 452 Mailbox full |
| 5xx | 恒久エラー (再送不可) | 550 User unknown / 553 Invalid address / 554 Spam blocked |
受信側 MTA が 4xx を返した場合、送信側はキューに残して数時間〜数日リトライします。5xx は即時バウンス。
STARTTLS による暗号化
STARTTLS は平文接続から TLS 接続にアップグレードする拡張コマンドです (RFC 3207):
EHLO client.example.com
250-server.example.com Hello client
250 STARTTLS ← サーバが STARTTLS 対応を広告
STARTTLS
220 Ready to start TLS
[ここから TLS ハンドシェイク、以降全通信が暗号化]
EHLO client.example.com ← TLS 後にやり直す
250-server.example.com Hello (TLS)
250 AUTH PLAIN LOGIN
AUTH PLAIN ...
SMTP-AUTH (認証)
Submission (587) では必ず AUTH が要求されます。主な方式:
| 方式 | 仕組み | 注意 |
|---|---|---|
| PLAIN | Base64 でユーザ名 + パスワードを送信 | 必ず TLS と併用 |
| LOGIN | PLAIN とほぼ同じ。Microsoft 系で多い | 必ず TLS と併用 |
| CRAM-MD5 | チャレンジレスポンス (パスワード非送信) | パスワード平文保管必要 → 廃れつつある |
| XOAUTH2 | OAuth 2.0 アクセストークン | Gmail / Microsoft 365 で標準 |
SPF / DKIM / DMARC (なりすまし対策)
SMTP には送信者認証の仕組みが無いため、From を詐称し放題です。これを補強するのが SPF / DKIM / DMARC。
SPF (Sender Policy Framework)
DNS の TXT レコードで「このドメインからメール送信が許される IP アドレス」を宣言します:
; DNS TXT レコード (example.com)
example.com. IN TXT "v=spf1 ip4:192.0.2.0/24 include:_spf.google.com -all"
; v=spf1 : SPF バージョン 1
; ip4:192.0.2.0/24 : この IP からの送信を許可
; include:... : 他ドメインの SPF を参照
; -all : 上記以外は拒否 (hard fail)
; ~all : softfail (受信側判断)
; ?all : neutral (判断保留)
DKIM (DomainKeys Identified Mail)
送信時にメールヘッダに電子署名を付与し、受信側は DNS で公開鍵を取得して検証します:
; メールヘッダ
DKIM-Signature: v=1; a=rsa-sha256; d=example.com; s=selector1;
h=from:to:subject:date;
bh=...;
b=...
; DNS TXT (selector1._domainkey.example.com)
selector1._domainkey.example.com. IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSq..."
DMARC
SPF / DKIM が失敗したメールをどう扱うかを宣言:
_dmarc.example.com. IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; pct=100"
; p=none : 何もしない (監視のみ)
; p=quarantine: 迷惑メールへ
; p=reject : 拒否
; rua=... : 集計レポートの送信先
; pct=100 : 100% に適用
2024 年から Gmail と Yahoo は送信ドメインに DMARC を必須化しています。一斉送信を行う場合は必ず設定してください。
主要なメールサーバ / クラウドサービス
| 製品 | 種別 | 特徴 |
|---|---|---|
| Postfix | OSS MTA | Linux のデファクト。設定がモジュール式で堅牢 |
| Sendmail | OSS MTA | 歴史最古。設定が複雑で衰退傾向 |
| Exim | OSS MTA | cPanel に同梱、ホスティングで人気 |
| Microsoft Exchange | 商用 | Active Directory 統合。社内メール定番 |
| Amazon SES | クラウド | $0.10/1000通。SDK で送信、IP レピュテーション AWS 管理 |
| SendGrid | クラウド | 無料 100通/日。配信統計 / バウンス自動処理 |
| Mailgun | クラウド | 開発者向け。REST API が使いやすい |
| Postmark | クラウド | トランザクションメール特化、到達率が高い |
PHP / Python / Node.js での送信例
// PHP (PHPMailer)
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer(true);
$mail->isSMTP();
$mail->Host = 'smtp.sendgrid.net';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = 'apikey';
$mail->Password = getenv('SENDGRID_API_KEY');
$mail->SMTPSecure = 'tls';
$mail->setFrom('noreply@example.com', 'My App');
$mail->addAddress('user@example.org');
$mail->Subject = 'Hello';
$mail->Body = 'This is the body';
$mail->send();# Python smtplib
import smtplib
from email.message import EmailMessage
msg = EmailMessage()
msg['From'] = 'noreply@example.com'
msg['To'] = 'user@example.org'
msg['Subject'] = 'Hello'
msg.set_content('This is the body')
with smtplib.SMTP('smtp.sendgrid.net', 587) as s:
s.starttls()
s.login('apikey', 'SG.xxxxxx')
s.send_message(msg)// Node.js nodemailer
import nodemailer from 'nodemailer';
const transporter = nodemailer.createTransport({
host: 'smtp.sendgrid.net',
port: 587,
secure: false, // STARTTLS
auth: { user: 'apikey', pass: process.env.SENDGRID_API_KEY },
});
await transporter.sendMail({
from: 'noreply@example.com',
to: 'user@example.org',
subject: 'Hello',
text: 'Body',
});
Postfix 最小構築 (Ubuntu)
sudo apt update
sudo apt install -y postfix mailutils
# 設定モード: "Internet Site" を選択
# system mail name: example.com
# /etc/postfix/main.cf
sudo postconf -e 'myhostname = mail.example.com'
sudo postconf -e 'mydestination = mail.example.com, localhost'
sudo postconf -e 'inet_interfaces = all'
sudo postconf -e 'inet_protocols = ipv4'
# STARTTLS
sudo postconf -e 'smtpd_tls_cert_file=/etc/letsencrypt/live/mail.example.com/fullchain.pem'
sudo postconf -e 'smtpd_tls_key_file=/etc/letsencrypt/live/mail.example.com/privkey.pem'
sudo postconf -e 'smtpd_use_tls=yes'
sudo systemctl restart postfix
# 送信テスト
echo "test" | mail -s "test" user@example.org
# ログ確認
sudo tail -f /var/log/mail.log
Gmail SMTP リレーで送信
少量メール送信なら Gmail の SMTP を使えます (Google Workspace 推奨):
SMTP サーバ: smtp.gmail.com
ポート: 587 (STARTTLS) or 465 (SSL)
ユーザ名: your-account@gmail.com
パスワード: アプリパスワード (2 要素認証必須)
https://myaccount.google.com/apppasswords
制限: 個人 Gmail で 500通/日、Workspace で 2000通/日
FAQ
Q: 25 番ポートで送信できない
A: 日本の ISP は OP25B でブロックしています。Submission (587) を使うか、VPS / クラウドのメールリレーサービスを使ってください。
Q: 自分のドメインで一斉メール送信したい
A: 自前 Postfix はバウンス率管理 / IP ウォームアップが大変。SendGrid / SES / Mailgun 等のクラウドサービスを強く推奨。SPF / DKIM / DMARC は必須設定。
Q: 送信したのに届かない
A: 受信側スパムフォルダ確認、SPF/DKIM 設定確認、IP がブラックリスト掲載されていないか (Spamhaus / MXToolbox) を確認。
関連プロトコル
- POP3 (110/995): メールを受信してサーバから削除 / 単一端末向け
- IMAP (143/993): サーバ上のメールを参照 / 複数端末向け
- MIME (RFC 2045-2049): メールに添付ファイルや HTML を含める拡張
- S/MIME: メール本文の電子署名・暗号化
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?