Como servir o MailCatcher por trás do HTTPS e da autenticação?

4

Estou desenvolvendo um aplicativo Ruby on Rails e tenho um servidor de teste. Mas este servidor de teste não está enviando nenhum email - em vez disso, ele está descartando-os.

Para testar nossos e-mails enviados e a aparência desses e-mails (para que possamos usar o servidor de teste para o controle de qualidade), eu encontrei MailCatcher . Mas atualmente ele é focado no ambiente de desenvolvimento, então não há suporte para nem HTTPS ou autenticação - e eu não quero expor todos os emails do MailCatcher para todos.

Existe alguma maneira de fornecer HTTPS e autenticação básica através do Apache ou Nginx? Talvez um proxy reverso?

    
por jmonteiro 10.09.2011 / 19:20

2 respostas

3

Depois de algumas tentativas, e graças à dica mailq , consegui usar o Apache 2.2 mod_proxy_balancer, mod_proxy e mod_proxy_http para MailCatcher de proxy reverso, podendo servir cabeçalhos de autenticação básica HTTPS e HTTP.

Alguns detalhes da configuração:

  • O servidor está executando o Ubuntu 10.04 LTS
  • Meu diretório gemcatcher é /usr/local/rvm/gems/ree-1.8.7-2011.03/gems/mailcatcher-0.5.1/public .
  • Meu URL do servidor é mailcatcher.example.com .
  • Eu criei um certificado autoassinado em /etc/apache2/ssl/mailcatcher.example.com.pem e /etc/apache2/ssl/mailcatcher.example.com.key .
  • Meu nome de usuário HTTP BasicAuth é theusername e a senha é s3cr3t .
  • O usuário é chamado de implantação .
  • O MailCatcher precisa ser ativado manualmente pelo usuário deploy (em outras palavras, o Apache não o ativará por conta própria).

Crie um arquivo de usuário / senha htpasswd

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

Escreva para / 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>

Ative os módulos necessários do Apache, site e reinicie o apache

a2enmod ssl
a2enmod proxy_balancer
a2enmod proxy_http
a2ensite mailcatcher
service apache2 restart

Transforme o MailCatcher em

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

A última coisa que fiz foi configurar meu aplicativo Ruby on Rails para enviar e-mails usando o servidor SMTP 127.0.0.1, porta 1025 (em vez da porta padrão 25).

Para acessar o link , com o nome de usuário theusername e a senha s3cr3t .

    
por 11.09.2011 / 07:12
0

Experimente também o link - é um servidor SMTP falso baseado na web, como o mailcatcher. Mas isso não requer que você execute o servidor SMTP por conta própria e / ou configure o Apache.

Tem permissão de gerenciamento e autorização que são flexíveis o suficiente.

    
por 16.02.2012 / 20:33