メールサーバの移行

イメージ
 自前のメールサーバを停止 これまで、自ドメインのメールサーバはVPS上に構築していた。 ・Ubuntu Server ・Postfix ・Dovecot ・spamAssassinと、BlackListの利用 Spam対策を行ってきたし、サーバ上でメールをトリガーにして各種プログラムを動かしたりしてきた。 メールサーバのメンテナンスは結構面倒くさくて、  ・Disk容量のチェック  ・不正アクセスのチェック  ・各種セキュリティパッチの適用 など、手間がかかる。 そこで、外部のサーバを利用することに…。 結構安くて使い勝手の良さそうなのが、「さくらのメールボックス」 3年契約で、3070円とな…。  メールアドレスは自分のだけなので、20GBまで利用可能!  (Gmailより大きいねぇ) ということで、早速契約。 アカウント設定を行って、既存のDNSを書き換える。WHOISも書き換えて完了。 SMTPとIMAPが利用できればOK。 ちょうど、GoogleがSPF設定していないと受信しないし、DKIMおよびDMARCに対応していないメールを弾くようになったので、対応しているのを確認。 さくらサーバ自体は、これまでお客さんのサーバとして何件も利用しているので、利用方法も難しくはない。  Webメールにも対応しているので、いざという場合にもありがたい。 ということで、各メールソフトの設定を変更。  PC(常時使用する3台)とタブレット、スマートフォンと台数は多いがそれ程手間はかからない。 問題は、旧サーバで送受信したメールの履歴だけれど、これはThunderbrdを使ってローカルに保存することで回避。  本当は、サーバtoサーバでMailboxに残そうとも考えたんだけど、古いメールはそれ程必要ないし、ローカルにバックアップしてあれば凌げるので、良しとする。 移行時にDNSの反映で若干時間がかかったものの、問題なく送受信できるのを確認して、作業完了。  これでメンテナンスの手間が減るので、安いもんです。

異なるマシンで403 forbiddenが発生する

API関連のプログラムを作成中に

RESTfulなAPIを作成して、テストしているのだけれど、ノート上では通ったテストがデスクトップ上のマシンだと通らない事象が発生…。

なぜか、403 forbiddenが返ってくる。

まずは、ブラウザでPOST/GETのテスト。
問題なく動作する(これはこれで、なぜだ…)

なので、動いているかと思い、PUT/DELETEなどのmethodもテストする。
ブラウザでは無理なので、Postmanを使っている。

ノートでは、正常にレスポンスが返ってくるのに、デスクトップだとエラー。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
    <head>
        <title>403 Forbidden</title>
    </head>
    <body>
        <h1>Forbidden</h1>
        <p>You don't have permission to access /~yoshimura/xxxxx/api/yyyyy/12345
on this server.
            <br />
        </p>
        <hr>
        <address>Apache/2.4.29 (Ubuntu) Server at localhost Port 80</address>
    </body>
</html>
なんで〜。
念の為、ログを見る。

::1 - - [02/Feb/2019:12:17:44 +0900] "POST /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 200 198 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:19:00 +0900] "PUT /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 403 539 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:39:39 +0900] "GET /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 200 2150 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:41:09 +0900] "DELETE /~yoshimura/xxxxx/api/yyyyy/12345 HTTP/1.1" 403 539 "-" "PostmanRuntime/7.4.0"
::1 - - [02/Feb/2019:12:41:36 +0900] "PATCH /~yoshimura/xxxxx/api/yyyyy/99999 HTTP/1.1" 403 539 "-" "PostmanRuntime/7.4.0"


パーミッションが無いって言われても、同じプログラムにアクセスしてるんでっせ…。
むむむ。POSTとGETは通るのに…。

noteでは、localhost直で叩いていたけれど、デスクトップは他のプロジェクトなどもあるので、ユーザディレクトリで動かしているからか?→ピーン! 🔔

解決!

apache上のuserで動作するように、mods-enabledにuserdirを突っ込んでいる。
( # a2enmod userdir )

この設定ファイルuserdir.confを見ると、
<Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes Options
        Options MultiViews Indexes FollowSymlinks IncludesNoExec
        Require method GET POST OPTIONS
</Directory>

あった!
require method に getとpostしか許可していなかった…。
これを
Require method GET POST PUT DELETE OPTIONS
と書き換えて、apacheを再起動。
無事に、受け取るようになった…。

しょうもない設定漏れで、2時間程無駄に費やしたゎ。

ということで、wwwroot以外で動作させる場合に、userdir.confの設定にも気をつけようという備忘録です。


コメント

このブログの人気の投稿

WPS Officeで日本語入力ができない

VirtualBoxでUSBから起動

Virtualboxとnvidiaドライバ