KagoyaのVPSを契約し、自分のサーバーを構築してみたいと思い、色々と作業している最近のことです。

ドメインを取得し、レンタルサーバーではなく自分で構築したサーバーにメールサーバーを立てようと色々と参考サイトを見ながら作業しました。

主に参考にしたのはいつもお世話になっているServerWorldさん。

 

ServerWorld
https://www.server-world.info/

 

メールサーバーはPostfixとDovecotを利用して送信サーバーと受信サーバーを構築するようです。

ServerWorldさんの構築ページを参考に作業し構築した後、テスト送受信を行ったところまでは良かったのですが、ある障害にぶち当たりかなりハマり数日がつぶれました。

それは外部への送受信ができないということ。

自宅サーバーではなくKagoyaを借りてるため、一応外部ではあるんですがw

自分のサーバー外に送受信できないという意味です。

そう、テスト送受信は自分のサーバーユーザー間でmailコマンドで行ったため、ローカル内で送受信を確認しただけでした。

そういうことで、サーバー情報をメールクライアントソフトに設定して行ってみることにしたらその障害が発覚しました。

今までの作業は大体以下のような感じ。

 

1.ドメイン取得
2.DNS設定
3.nginxインストール、構築
4.無料SSL取得、設定
5.postfixインストール、構築
6.dovecotインストール、構築

 

1から3までは仕事でもやっているため特に問題はなく、SSLの取得はコマンド入力で取得し、特定の場所に出来上がったファイルがあるかを確認できたらOK。

そして、postfixとdovecotは構築後にローカル同士なら送受信可能は確認できました。

しかし、パソコンにあるメールクライアントにログイン情報を設定して起動してみると送受信のサーバーともエラーが発生してしまいました。

SSLのファイルまでのパスに間違いはない、ポート開放も確認済み、ユーザー名とパスワードの確認もOKでした。何が悪いのか?

エラーの主な問題は、SSLの証明が不十分ということでした。無料SSLで取得した情報が不正に取得されたものだとクライアントソフトが判断してしまっていたんです。

ということで、これは例外として許可するみたいな設定にしてクリアとなりました。ホントはそのようなことをしなくても良いようにするべき内容なんですけどね。

IPアドレスの逆引き設定とかもするべきことなんでしょう。

それはそれとして、クライアントソフトで例外に設定したサーバーとの接続もできたことで、今度はメールの送受信をしてみると、同ドメイン同士はできても外部の別ドメインとは送受信できませんでした。なぜや・・・

セキュリティ的に色々とあって厳しくなっているのは分かりますが、せめて受信くらいはユーザー名とパスワードで認証するわけで出来てもおかしくないかい?

サーバー構築も参考場所はServerWorldだけに限らず色々と調べてみたけど、概ね同じで特に変更することは見当たらず。

しかし、あるサイトは設定する場所と内容は同じでも、違う設定方法を紹介しているサイトがありました。

さくらのVPSでサーバー構築
https://jitaku.work/it/category/server-construction/sakura-construction/

 

他のサイトで設定してた方法とは違う内容だったのは以下のようなものでした。

 

// ファイヤーウォール設定
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow smtp
sudo ufw allow smtps
sudo ufw allow pop3
sudo ufw allow pop3s
sudo ufw allow imap
sudo ufw allow imaps
sudo ufw allow postfix
sudo ufw allow submission

 
// Dovecot /etc/dovecot/conf.d/10-master.conf
// 以下にある部分の#をすべて外す
inet_listener imap {
  #port = 143 ← #を削除する
}
inet_listener imaps {
  #port = 993 ← #を削除する
  #ssl = yes ← #を削除する
}
service pop3-login {
  inet_listener pop3 {
    #port = 110 ← #を削除する
  }
  inet_listener pop3s {
    #port = 995 ← #を削除する
    #ssl = yes ← #を削除する
  }
}
service submission-login {
  inet_listener submission {
    #port = 587 ← #を削除する
  }
}

Dovecotの#を外すことに関しては、恐らくそれをしなくてもデフォルトで決まっているポートだからする必要がないんだと思うんですが、ひとまずやってみることにしました。

ファイヤーウォールの設定方法は、よく見たのはポート番号を指定したり、TCPを付けての設定だったりでしたが、ここはそのまま機能名で設定する方法を紹介してました。

 

// ufw設定
// Webサーバーの場合 80番開放
sudo ufw allow 80
sudo ufw allow 80/tcp
sudo ufw allow http

 

上三つはどれも80番のポート番号を開放する方法です。これを受信(POS3/IMAP)、送信(SMTP)にも同じようにしてみました。

そして最後にDovecot、Postfixとも再起動してメーラーで別ドメインのメールとのやり取りをテストすると、出来ました。

めっちゃくちゃ嬉しいw

しかし、Gmailへの送信はできませんでした。これはもうGmailのセキュリティがドメインレベルで弾いてるんでしょうね。そもそもフリーメールだから。

それでGmailをメインメアドにしてる人に、企業などからのメールを受信する前に指定のドメインを弾かないようにする設定を促すんですね、納得。

だから現段階はGmailとのやり取りは後回しです。

でも受信は出来たのでほぼやりたいことが叶いました。

メールサーバー構築、ちょーー面倒くさいw

WebサイトをメインでするならVPSでサーバー構築するよりレンタルサーバー契約した方が絶対良い。