Назад | Перейти на главную страницу

Как обслуживать MailCatcher за HTTPS и аутентификацией?

Я разрабатываю приложение Ruby on Rails и имею промежуточный сервер. Но этот промежуточный сервер не отправляет электронные письма - вместо этого он их отбрасывает.

Чтобы проверить, как отправляются наши электронные письма, и как они выглядят (чтобы мы могли использовать промежуточный сервер для контроля качества), я обнаружил MailCatcher. Но в настоящее время он ориентирован на среду разработки, поэтому нет поддержки ни HTTPS, ни аутентификации - и я не хочу раскрывать все электронные письма MailCatcher для всех.

Есть ли способы обеспечить HTTPS и базовую аутентификацию через Apache или Nginx? Может обратный прокси?

После некоторых попыток и благодаря пользователю mailq Совет, мне удалось использовать Apache 2.2 mod_proxy_balancer, mod_proxy и mod_proxy_http для обратного прокси MailCatcher, имея возможность обслуживать заголовки HTTPS и HTTP Basic Authentication.

Некоторые детали настройки:

  • Сервер работает под управлением Ubuntu 10.04 LTS
  • Мой каталог драгоценных камней Mailcatcher /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.
  • Мое имя пользователя 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.

Попробуйте также http://mailtrap.io - это поддельный SMTP-сервер на базе Интернета, такой как mailcatcher. Но для этого не требуется, чтобы вы запускали SMTP-сервер самостоятельно и / или настраивали Apache.

Он имеет достаточно гибкое управление разрешениями и авторизацию.