![如何在 HTTPS 和身份验证后提供 MailCatcher 服务?](https://linux22.com/image/561048/%E5%A6%82%E4%BD%95%E5%9C%A8%20HTTPS%20%E5%92%8C%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E5%90%8E%E6%8F%90%E4%BE%9B%20MailCatcher%20%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
我正在开发一个 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。
具有足够灵活的权限管理和授权。