web-dev-qa-db-ja.com

HTTPSと認証の背後でMailCatcherを提供する方法は?

Ruby on Rails appを開発していて、ステージングサーバーがあります。しかし、このステージングサーバーはメールを送信していません。代わりに、破棄しています。それら。

送信される電子メールと、それらの電子メールがどのように見えるかをテストするために(QAにステージングサーバーを使用できるように)、 MailCatcher を見つけました。ただし、現在は開発環境に重点を置いているため、HTTPSも認証もサポートされていません。また、すべてのMailCatcherメールをすべての人に公開したくありません。

ApacheまたはNginxを介してHTTPSと基本認証を提供する方法はありますか?多分リバースプロキシ?

4
jmonteiro

何度か試した後、ユーザー mailq のヒントのおかげで、Apache 2.2 mod_proxy_balancer、mod_proxy、mod_proxy_httpを使用してMailCatcherをリバースプロキシし、HTTPSおよびHTTP基本認証ヘッダーを提供できるようになりました。

いくつかのセットアップの詳細:

  • サーバーはUbuntu10.04LTSを実行しています
  • 私のメールキャッチャーのgemディレクトリは/usr/local/rvm/gems/ree-1.8.7-2011.03/gems/mailcatcher-0.5.1/publicです。
  • 私のサーバーのURLはmailcatcher.example.comです。
  • /etc/Apache2/ssl/mailcatcher.example.com.pem/etc/Apache2/ssl/mailcatcher.example.com.keyに自己署名証明書を作成しました。
  • 私のHTTPBasicAuthユーザー名はtheusernameで、パスワードはs3cr3tです。
  • ユーザーはdeployと呼ばれます。
  • MailCatcherは、deployユーザーが手動でオンにする必要があります(つまり、Apacheはそれ自体ではオンになりません)。

htpasswdユーザー/パスワードファイルを作成します

mkdir -p /home/deploy/mailcatcher
htpasswd -cb /home/deploy/mailcatcher/htpasswd theusername s3cr3t

/ etc/Apache2/sites-available/mailcatcherに書き込みます

<VirtualHost *:443>
  ServerName mailcatcher.example.com
  DocumentRoot /usr/local/rvm/gems/ree-1.8.7-2011.03/gems/mailcatcher-0.5.1/public
  SSLEngine On
  SSLCertificateFile /etc/Apache2/ssl/mailcatcher.example.com.pem
  SSLCertificateKeyFile /etc/Apache2/ssl/mailcatcher.example.com.key
  <Directory /usr/local/rvm/gems/ree-1.8.7-2011.03/gems/mailcatcher-0.5.1/public>
    Allow from all
    Options -MultiViews
    FileEtag none
  </Directory>
  <LocationMatch "/"> 
    AuthType Basic 
    AuthName "MailCatcher" 
    AuthUserFile /home/deploy/mailcatcher/htpasswd
    Require valid-user
  </LocationMatch> 

  RequestHeader set X_FORWARDED_PROTO 'https'
  ProxyPassReverse / balancer://mailcatcher
  ProxyPreserveHost on
  ProxyRequests On
  ProxyPass / balancer://mailcatcher/

  <Proxy balancer://mailcatcher>
    Order deny,allow
    Allow from all
    BalancerMember http://127.0.0.1:1080
  </Proxy>
</VirtualHost>

必要なApacheモジュールをアクティブ化し、Apacheをサイトして再起動します

a2enmod ssl
a2enmod proxy_balancer
a2enmod proxy_http
a2ensite mailcatcher
service Apache2 restart

MailCatcherをオンにします

mailcatcher --ip 127.0.0.1 --smtp-port 1025 --http-port 1080

私が最後にしたことは、SMTPサーバー127.0.0.1を使用して電子メールを送信するようにRuby on Rails appを構成することでした、ポート1025(デフォルトのポート25の代わりに)。

アクセスするには https://mailcatcher.example.com 、ユーザー名ユーザー名とパスワードs3cr3t

3
jmonteiro

また試してみてください http://mailtrap.io -これはmailcatcherのようなWebベースの偽のSMTPサーバーです。ただし、SMTPサーバーを自分で実行したり、Apacheをセットアップしたりする必要はありません。

十分に柔軟な権限管理と承認があります。

0
Bogdan Gusiev