Vercel dns catchall email
Skill bokuwalily/claude-code-skills/skills/vercel-dns-catchall-email
Vercel DNS管理のドメインに無料のcatch-allメール受信転送を付けたい時。第三者アカウント作成なし・DNSレコード追記だけでForward Emailにより全アドレスをGmail等へ転送する。送信は対象外(受信のみ)From its SKILL.md
npx -y skills add bokuwalily/claude-code-skills --skill vercel-dns-catchall-emailAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.7 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it
Procedure
Vercel DNS(NSが*.vercel-dns.com)のドメインに、*@domain を1つの転送先へ集約する受信専用メールを構築する。
🚨最初に判定: 対象ドメインの作成/失効が90日以内なら Forward Email無料は使えない(新規ドメインをブロック、$3/月で解除)。
whois <domain> | grep -i creatや Vercelvercel domains ls --scope <id>のAge列で確認。新規ドメイン → ImprovMX無料を使う(下記「ImprovMX経路」)。90日超の枯れたドメイン → Forward Email DNS-only(アカウント不要で全自動)。
Forward Email経路(90日超ドメインのみ・アカウント不要)
-
前提確認(既存メール設定との衝突回避):
dig +short MX <domain> @8.8.8.8 # 既にMXがあれば衝突→別対応 dig +short TXT <domain> @8.8.8.8 # 既存SPFがあればマージ必要既存MX/SPFが無ければ追記はライブサイトに無影響。
-
Vercelスコープを特定(罠): プロジェクトの
~/dev/<proj>/.vercel/project.jsonのorgId(team_xxxx)を読む。vercel dns ls/addはデフォルトスコープだと "You don't have permission" で弾かれることがある(vercel teams lsに出ないチームでも)。必ず--scope <orgId>を付ける。cat ~/dev/<proj>/.vercel/project.json # orgId取得 vercel dns ls <domain> --scope <orgId> # 権限OKか確認 -
最新のDNS値を裏取り(ハードコード禁止):
https://forwardemail.net/en/faqをWebFetchで確認。2026-06時点の値:- MX
@→mx1.forwardemail.net(priority 0) - MX
@→mx2.forwardemail.net(priority 0) - TXT
@→forward-email=<dest>@gmail.com(プレフィックス無し=catch-all。全アドレスをdestへ) - TXT
@→v=spf1 a include:spf.forwardemail.net -all
- MX
-
追加(zshは
$VARを単語分割しない→フラグは直書き):cd ~/dev/<proj> vercel dns add <domain> '@' MX mx1.forwardemail.net 0 --scope <orgId> vercel dns add <domain> '@' MX mx2.forwardemail.net 0 --scope <orgId> vercel dns add <domain> '@' TXT 'forward-email=<dest>@gmail.com' --scope <orgId> vercel dns add <domain> '@' TXT 'v=spf1 a include:spf.forwardemail.net -all' --scope <orgId> -
特定アドレスだけ別の転送先に分けたい場合は catch-all の代わりに:
forward-email=contact:[email protected],aibijo:[email protected]のようにプレフィックス指定。集約+Gmailラベル仕分けで足りるなら catch-all 1本でよい。
ImprovMX経路(新規ドメイン可・無料・要アカウント1回)
新規ドメインで Forward Email が使えない時の本命。ImprovMXは新規ドメイン制限なし・無料で 1ドメイン/25エイリアス/catch-all。
- DNSを先に差し替え(私がCLIで実施。Forward Emailのレコードが残っていればMX/SPF/forward-email TXTを全削除してから):
削除はcd ~/dev/<proj> vercel dns add <domain> '@' MX mx1.improvmx.com 10 --scope <orgId> vercel dns add <domain> '@' MX mx2.improvmx.com 20 --scope <orgId> vercel dns add <domain> '@' TXT 'v=spf1 include:spf.improvmx.com ~all' --scope <orgId>vercel dns ls <domain> --scope <orgId>でrec_id確認→vercel dns rm <id> --yes --scope <orgId>。 - 本人がやる手動(~2分): improvmx.com で転送先Gmail(Google)サインイン→ドメイン追加(MX/SPFは設定済で即検証OK)→エイリアス作成: catch-all
*→転送先(無料で不可なら個別 contact@/aibijo@ 等)。 - ImprovMXはAPIあり(
api.improvmx.com)。本人のAPIキー入手後はエイリアスをcurlで作成可=完全自動化できる。
Pitfalls
- scope必須:
--scope <team_id>無しは権限エラー。vercel teams lsに出なくてもscope明示でアクセス可。 - zsh単語分割なし:
S="--scope x"; cmd $Sは1トークン扱いでunknown optionになる。フラグはコマンドに直書きするか${=S}。 - 送信は別物: これは受信転送のみ。
<addr>@domainから送りたいなら Gmail「Send mail as」+ SPFにinclude:_spf.google.com追記が別途必要。 - 既存MX/SPFがあるドメインは上書き注意(SPFは1レコードにマージ)。
- 転送先Gmailは最初フォワードメールをスパム判定することがある→受信したら「迷惑メールでない」を押す。
Verification
実メールを送らずに catch-all 稼働を確認(port25が通る環境):
python3 - <<'PY'
import smtplib, socket
socket.setdefaulttimeout(15)
for h in ("mx1.forwardemail.net","mx2.forwardemail.net"):
s=smtplib.SMTP(h,25); s.ehlo("probe.local")
s.mail("[email protected]")
print(h, s.rcpt("anything@<domain>")) # (250, b'... Accepted') ならOK
s.quit()
PY
250 ... Accepted はMXが受理しただけ。⚠️RCPT 250 は実転送を保証しない(新規ドメインのForward Emailは250で受けてから転送せずupgrade要求を返す)。最終確認は必ず実メールを1通送って転送先に着信するかで行う。「完璧?」と聞かれても実着信テスト前は「受信インフラOK・実配信1通だけ未確認」と正直に切り分けて報告する。
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.