前回まででラズパイのセットアップが完了したので、mastodonのインストールに先立ってネットワークの公開設定をする。
・ラズパイをインターネットに公開する
まずはラズパイに外部からアクセスできないと話にならないのでここからやっていく。
ラズパイを外部に公開するためには、ルーター側でポートフォワード設定をする必要がある(ポートマッピングともいうかもしれない)。
LAN(ローカルネットワーク)内の端末にはローカルIPアドレスしか振られておらず、外部からアクセスするためにはルーターに振られているグローバルIPアドレスにアクセスするしかない。そこで、ポート番号という情報を基にしてLAN内のどの端末にアクセスを振り分けるかの設定を、ルーターに与えてやる必要があるわけである。
ここでは普通にごく一般的な22, 80, 443ポートを設定した。外部からSSHで繋ぐ気がない人は22は要らない。セキュリティ的にもっと頑丈にしたいのであれば22は(他と被らない範囲で)任意の数字に変えてしまってもよいだろう。参考までに自分のルーターの設定画面はこんな感じである。
・DDNS
さて、これでIPベースでのアクセスは可能になったが、これではSSL証明書が取れないので、ドメインを取る必要がある。ルーターに静的(static)IPが割り当てられている人なら適当なドメインを取ってDNSのAレコードにルーターのIPを指定するだけだが、だいたいの庶民は動的(dynamic)IPしか振られていないだろう。長時間アクセスがなかったり、またはルーターの電源を入れなおしたりすると割り当てられたIPが変わってしまうのだ。
そこで活躍するのがDDNS = Dynamic DNSサービスである。これはIPアドレスをこちらから定期的に通知してやることでドメインからIPアドレスへの変換( = 名前解決)を勝手にやってくれるのだ。ただし、IPアドレスの変更を勝手に追跡してくれるわけではないことに留意されたい。すなわち、IPアドレスが変わってから次の通知の間まではアクセス不可能な時間が発生する。
この通知間隔をどうするかは自由だ(利用するサービスにもよる)が、たとえば有名DDNSサービスであるMyDNSのマニュアルだとcrontabを5分間隔で設定している。案外短いな。
DDNSの設定に関しては他の記事に譲るとして、ここでは仮にmstdn.mydns.jpというドメインを登録したことにしよう。そうすると、利用者側からはこちらのIPアドレスに関係なくこのドメイン名でアクセスできるようになる。なお、もしmydns側で用意されたドメインが気に入らないのであれば、独自ドメインのDNSのCNAMEレコードにこのドメインを指定すればリダイレクトしてくれる。図解するとこんな感じ。
・ついでにメールの設定でも
これでラズパイに外部からアクセスできるようになったので、mastodonをインストールしていってもよいのだが、ラズパイからメールを送れるようにしておいたほうが良いだろう。
細かいことは抜きにして一番楽なのはGmailをリレーしてメールを送ることである。ラズパイのようなdebian系のOSではexim4を使うのが手っ取り早い。
とりあえずGoogleのアカウントを作るか、既存のものを流用する。まずは「設定>セキュリティ」から「安全性の低いアプリのアクセス」を有効にする。これをしないとメールが弾かれる。
続いてはラズパイにexim4を導入・設定する。
$ sudo apt install exim4
$ sudo dpkg-configure exim4-config
すると対話式の設定画面になる。全部で10の項目があるがほとんどはデフォルトのままでよい。
・①設定タイプの選択。「スマートホスト経由で送信、SMTPまたはfetchmail経由で受信」を選択
・②「メール名」設定。FQDNを指定せよと書いてあるのでドメインを書くのが良いっぽい。ぶっちゃけ適当でもいい。
・③受信元IPの指定。今回は外部から受信することは考慮しないのでlocalhostである127.0.0.1(IPv4)と::1(IPv6)を指定している。
・④受信ドメイン設定。この端末宛になるドメインを列挙するが、受信しないので空白でよい。
・⑤この端末が他の端末からのメールをリレーする先のアドレス。リレーしないので空白でよい。
・⑥スマートホストとして使うサーバーのアドレス。今回はGmailを使うのでsmtp.gmail.com::587
を指定する。コロンは2個。
・⑦送信元の秘匿(?)設定。どっちでもよさそうだけどNoにしておく。
・⑧DNSのなんか。よくわからんけどNo。
・⑨受信メールの保管フォーマット。だいたいmboxを使うと書いてあるのでmboxにしておく。
・⑩設定ファイルの分割。特に必要性を感じないのでNoで。
以上の対話式の設定が終了したら、/etc/exim4/passwd.client
ファイルを弄って以下の行を追加する。username
とpassword
はもちろん各々のGoogleアカウントのものを指定する。
gmail-smtp.l.google.com:username@gmail.com:password
*.google.com:username@gmail.com:password
smtp.gmail.com:username@gmail.com:password
そうしたら試しにメールを送ってみよう。
$ echo "content" | mail -s "subject" recipient@example.com
届けばOKだ。
次の記事でmastodonのインストールをする。
Googleが安全性の低いアプリのアクセスの設定を変更できなくしたようなのですが、どの様に代用できますか?もし出来たら、教えてほしいです!
検証はしていませんが、こちらの記事が参考になるかと思います。https://mseeeen.msen.jp/send-mail-via-smtp-with-exim4-on-raspberry-pi/