如何在 HTTPS 和身份验证后提供 MailCatcher 服务?

如何在 HTTPS 和身份验证后提供 MailCatcher 服务?

我正在开发一个 Ruby on Rails 应用程序,并且有一个临时服务器。但是这个临时服务器不发送任何电子邮件 - 相反,它正在丢弃它们。

为了测试我们发送的电子邮件以及这些电子邮件的外观(以便我们可以使用临时服务器进行 QA),我发现邮件捕手。但目前它专注于开发环境,因此不支持 HTTPS 或身份验证——而且我不想向所有人公开所有 MailCatcher 电子邮件。

有没有办法通过 Apache 或 Nginx 提供 HTTPS 和基本身份验证?也许是反向代理?

答案1

经过多次尝试,感谢用户邮件提示,我设法使用 Apache 2.2 mod_proxy_balancer、mod_proxy 和 mod_proxy_http 来反向代理 MailCatcher,能够提供 HTTPS 和 HTTP 基本身份验证标头。

一些设置细节:

  • 服务器运行的是 Ubuntu 10.04 LTS
  • 我的 mailcatcher gem 目录是/usr/local/rvm/gems/ree-1.8.7-2011.03/gems/mailcatcher-0.5.1/public
  • 我的服务器网址是mailcatcher.example.com
  • /etc/apache2/ssl/mailcatcher.example.com.pem我在和创建了一个自签名证书/etc/apache2/ssl/mailcatcher.example.com.key
  • 我的 HTTP BasicAuth 用户名是用户名密码是s3cr3t
  • 用户被调用部署
  • MailCatcher 需要由部署用户(换句话说,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

我做的最后一件事是配置我的 Ruby on Rails 应用程序使用 SMTP 服务器 127.0.0.1 发送电子邮件,端口 1025(而不是默认端口 25)。

访问https://mailcatcher.example.com,用户名用户名和密码s3cr3t

答案2

尝试一下http://mailtrap.io- 它是一个基于 Web 的伪 SMTP 服务器,类似于 mailcatcher。但它不需要您自己运行 SMTP 服务器和/或设置 Apache。

具有足够灵活的权限管理和授权。

相关内容