Envie e-mails pela porta 80 usando a linha de comando do Linux

1

Eu tenho um servidor que não tem permissão para enviar e-mails de saída nem ter acesso a nenhum servidor de nomes.

O que ele tem é um proxy http que permite que ele acesse os outros servidores e eu posso fazer solicitações wget por ip ou hostname que eu adicionei no arquivo hosts.

Eu tentei fazer uma regra NAT para redirecionar todo o tráfego destinado à porta 25 para a porta 80, mas não tive sorte.

Existe alguma maneira de enviar e-mails pela linha de comando em uma situação como a minha? Eu preciso que o servidor envie e-mails automáticos com base em alguns trabalhos agendados que eu tenho.

    
por idipous 26.11.2014 / 21:59

1 resposta

1

Sim e não.

É certamente possível fazer um MTA falar SMTP sobre uma porta não padrão - mas somente se o servidor na outra extremidade estiver esperando isso. E você descobrirá que ninguém, nunca, escuta o SMTP na porta 80 - então seu servidor passaria a maior parte do tempo tentando falar com o Apache de alguém. Para troca de mensagens de servidor para servidor (MX), é a porta 25, fim da história.

Então você não pode apenas alterar a porta. Em vez de se conectar diretamente aos servidores de e-mail dos destinatários (de registros MX), o seu MTA precisaria retransmitir todos os e-mails através de um servidor específico que tenha sido configurado para aceitar o SMTP na porta 80.

Mas fazer isso é relativamente fácil, contanto que você tenha um segundo servidor que seja autorizado a enviar e-mails. Instale um MTA lá (por exemplo, OpenSMTPD ou Postfix), configure-o para escutar na porta 80 e para confiar no endereço IP do servidor de "origem" para retransmissão. (Como alternativa, em vez de uma lista de permissões de IP, a autenticação de nome de usuário / senha SMTP seria ainda melhor.)

Aqui está um exemplo do OpenSMTPD (não testado):

table relay-in-ip { "12.34.56.78" }
listen on 0.0.0.0 port 80 tls-require
listen on :: port 80 tls-require
accept from source <relay-in-ip> for any relay

Da mesma forma, para SMTP autenticado:

table relay-in-auth { "someuser"="somepassword" }
listen on 0.0.0.0 port 80 tls-require auth <relay-in-auth> tag AUTHED
listen on :: port 80 tls-require auth <relay-in-auth> tag AUTHED
accept tagged AUTHED from any for any relay

(Certifique-se de realmente teste do servidor de retransmissão - seria Bad ™ se permitia que toda a internet transmitisse as mensagens, mesmo que eu não entendesse bem o porquê.

Uma vez que você tenha configurado, geralmente é necessária apenas uma única configuração no servidor de "origem" para retransmitir todos os e-mails - dependendo do MTA, a opção pode ser chamada de "host de retransmissão" ou "smarthost". sempre aceita um host: especificação de porta:

accept for any relay via "tls://relay.example.com:80"

Se a autenticação for necessária:

table relay-out-auth { "foo"="someuser:somepassword" }
accept for any relay via "tls+auth://[email protected]:587" auth <relay-out-auth>
    
por 27.11.2014 / 07:34