GCP Compute Engineなど常時接続の固定グローバルIPアドレスを持てるサーバーを適切に設定して🙆@I❤️♨️.tk というメルアドでメールを受信できるようにする話です。サーバーはウブンツを仮定。動作確認はGCP Compute EngineのUbuntu 19.10 Minimalで行っています。絵文字メルアドに向かってgmailからメール送信して無事受信できました(記事末尾参照)。GCP Compute Engineからメール送信するのは外向きのポート25番への接続が全面禁止されていて面倒なのでやってません。
GCPで固定グローバルアドレスを取得(無料)する手順は 静的外部 IP アドレスの予約 に説明されています。
ドメイン名取得
基本的には 無料で絵文字ドメイン名とそのSSL証明書を取得して遊ぶ (Freenom × Let's Encrypt) に書いてある通りですが、Freenomで空きドメイン名を探すときに入力欄に「I❤️♨️」といれるのではなく「I❤️♨️.tk」のように国コード(tk)まで入力して空きを探します。そうしないと「空きがありません」エラーが空きがある場合でも返されます(2020年3月)。また「佐藤家.tk」のような日本語ドメイン名も空きがあれば取得できます。ここで「転送(Forwarding)サービス」ではなくてDNSを選びます。その後「Use Default Nameservers」を選びます。
FreenomのDNS情報の設定
ドメイン名を取得したら my.freenom.com にログインし「Services」→「My Domains」→「Manage Domain」→「Manage Freenom DNS」を選び、以下のスクショのような感じでAレコード(ホスト名をIPv4アドレスに変換するレコード)を確保してある固定グローバルアドレスに設定します。
GCPのファイアーウォールの設定
ファイアウォール ルールの概要 に従って外部から自分のサーバーのポート25番への接続を許すようにします。例としては以下のような感じ
postfix のインストール
sudo apt-get install postfix
でpostfixをウブンツサーバーにインストールします。ここでインストール時の設定としては「Internet Site」を選びます。以下のような感じ
@マークの前のユーザー名で受け取りたいものを普段使っているユーザーに転送するように /etc/aliases
を編集し、newaliases
を実行します。
```config:/etc/aliases`
root: myuser
🙆: myuser
♨️: myuser
♨: myuser
💩: myuser
また、`/etc/postfix/main.cf` の末尾に以下のように絵文字ドメイン名を設定します
```config:/etc/postfix/main.cf
smtputf8_enable = yes
mydomain = xn--i-t3p94b.tk
myhostname = www.xn--i-t3p94b.tk
myorigin = I❤️♨️.tk
mydestination = www.xn--i-t3p94b.tk, xn--i-t3p94b.tk, I❤️♨️.tk, www.I❤️♨️.tk, I❤♨.tk, www.I❤♨.tk
smtputf8_autodetect_classes = all
Postfix SMTPUTF8 support に書いてあるようにmydomain
と myhostname
にはASCII文字しか書けないため https://www.punycoder.com/ で絵文字をASCIIに変換したドメイン名を書く必要があります。それ以外の部分には絵文字ドメインを書いておきます。最後に systemctl restart postfix
でpostfixを再スタートします。
ウェブサーバー
似たような手順で絵文字ドメインのウェブサーバーも設置できます。
- GCPのファイアーウォール設定で自分のサーバーのポート80番への接続を許可する
-
nginx
をインストールする
という手順でできます。設置した例が http://www.I❤️♨️.tk にあります(現在休止中)。
送信アドレスを 🙆@i❤♨.tk にした gmail からの送信
別のアドレスやエイリアスからメールを送信する に従って作業すればできるようになると思いますが、まだやってません。
gmailから絵文字メルアドに送ったメール
From user@gmail.com Mon Mar 16 17:33:21 2020
Return-Path: <user@gmail.com>
X-Original-To: 🙆@i❤♨.tk
Delivered-To: 🙆@i❤♨.tk
Received: from mail-oi1-f181.google.com (mail-oi1-f181.google.com [209.85.167.181])
by www.xn--i-t3p94b.tk (Postfix) with UTF8SMTPS id 55F094048F
for <🙆@i❤♨.tk>; Mon, 16 Mar 2020 17:33:21 +0900 (JST)
Received: by mail-oi1-f181.google.com with SMTP id p125so16858760oif.10
for <🙆@i❤♨.tk>; Mon, 16 Mar 2020 01:33:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20161025;
h=mime-version:from:date:message-id:subject:to
:content-transfer-encoding;
bh=INqmyYv9ms4xWxHIIbZPJ+3ZG4qe23aFwE1bDUqu+NU=;
b=RzB3/1rHz6WIHoFT+rpS4PbSAFm4uctPkJd84QATrPWJKITpS6JYmsZrmsIp7KUf0f
tnoKx8JY5x7114Y6m1a0gDw/zY/IblcvBd4OXxxIJDqg/p+0LvZiGGOJai0q+Ip1tbqL
cNSaBOxj4rpAxGBtk9G+d36zWEcuCxFCTybKmvjLNkpYdf5ku681yyMWGt7VK4CixHK/
O3P0KfH+oXkbkdBLMp9gG9aax5+YWUMqumkoO7c8fng9KTS/0W2983RGrXnS3ps2H8WW
fvEA/ORNsT6Fp0sgJZMQcxNvyhq+1EULJKMf6JchILTKj1VtkNHG6D2GVcy0YsAeuGgI
gOQw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20161025;
h=x-gm-message-state:mime-version:from:date:message-id:subject:to
:content-transfer-encoding;
bh=INqmyYv9ms4xWxHIIbZPJ+3ZG4qe23aFwE1bDUqu+NU=;
b=HtizC0nleJI9mno4I2Ll8xgdQPjqjtxJYeajrsqGkvVttSwnsZbDFYm33QqKi+eeAE
jENTztY4ywShYnPKlDECLIIpFh/QFiZSndzK720NZWdSNDwCTeNQb8YJ1xzulm2Yi8dB
20WSfq1HxA43JpVvLRJIWqvRF780q2Mffe0++5tch+kVCMch97MvSzj3pr/xyWvKSLpe
6A1xb8fmc+5ys2FRRu7iP7sHwvGXEtKWoz6Ldi+BBjynaPSPABJVuj+ET4nL26yC3mI5
qF0q2T6sw6g0OSQXAuGe5hTY+0nTGbr8bEvBY218QTIyJGGRaU80omxcF13nGvttPSRT
VFcA==
X-Gm-Message-State: ANhLgQ03z2+MXOwnm9P7hdZatRPIB8D8NHle5f1oL1o6Kb/Z9/MiXZOV
oHDtXOxPJx1gb6NSgO6g1z07gh/yyEPROKBWVMvrTqqH
X-Google-Smtp-Source: ADFU+vt50BNjadWMv2B+LN4SMNzrb81//xfSBVM/07Y+mKWDol1FmEXDEwPK0At8xj01/1WNYgc2eQbCweEWMfjNdEw=
X-Received: by 2002:aca:5194:: with SMTP id f142mr17002785oib.100.1584347599696;
Mon, 16 Mar 2020 01:33:19 -0700 (PDT)
MIME-Version: 1.0
From: この記事の著者 <user@gmail.com>
Date: Mon, 16 Mar 2020 17:33:08 +0900
Message-ID: <CAMYGc7Y_wferXh732YcbYmeapPvESXLmjke00EGiSZrCQtk7iw@mail.gmail.com>
Subject: ✌
To: 🙆@i❤♨.tk
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
☃