Invia e-mail sulla porta 80 usando la riga di comando di Linux


1

Ho un server a cui non è consentito inviare e-mail in uscita o avere accesso a qualsiasi server dei nomi.

Quello che ha è un proxy http che gli consente di accedere agli altri server e sono in grado di fare richieste wget tramite ip o nome host che ho aggiunto nel file hosts.

Ho provato a fare una regola NAT per reindirizzare tutto il traffico destinato dalla porta 25 alla porta 80 ma non ho avuto fortuna.

Esiste un modo per inviare e-mail sulla riga di comando in una situazione come la mia? Ho bisogno che il server invii e-mail automatiche basate su alcuni lavori cron che ho.


È possibile utilizzare un servizio di posta elettronica che fornisce un'API Web, come sendgrid.com/docs/API_Reference/Web_API/index.html
Der Hochstapler,

questa è un'idea interessante ma preferirei non inviare queste informazioni su una terza parte ...
idiposo

Risposte:


1

Sì e no.

È certamente possibile fare in modo che un MTA parli SMTP su una porta non standard, ma solo se il server dall'altra parte lo prevede . E scoprirai che nessuno, mai, ascolta SMTP sulla porta 80 , quindi il tuo server passerebbe la maggior parte del tempo a cercare di parlare con qualcuno di Apache. Per lo scambio di posta da server a server (MX), è la porta 25, fine della storia.

Quindi non puoi semplicemente cambiare la porta. Piuttosto, invece di connettersi direttamente ai server di posta dei destinatari (dai record MX), il tuo MTA dovrebbe inoltrare tutta la posta attraverso un server specifico che è stato configurato per accettare SMTP sulla porta 80.


Ma fare che è relativamente facile, finché si dispone di un secondo server che è consentito inviare la posta. Installare un MTA lì (ad esempio OpenSMTPD o Postfix), configurarlo per l'ascolto sulla porta 80 e per fidarsi dell'indirizzo IP del server "sorgente" per l'inoltro. (In alternativa, invece di una whitelist IP, l'autenticazione nome utente / password SMTP sarebbe ancora migliore.)

Ecco un esempio OpenSMTPD (non testato):

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

Allo stesso modo, per SMTP autenticato:

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

(Assicurati di testare effettivamente il server di inoltro: sarebbe Bad ™ se consentisse all'intera Internet di inoltrare i messaggi senza autenticazione.

Una volta configurato, di solito è sufficiente una singola impostazione sul server "sorgente" per inoltrare tutta la posta - a seconda dell'MTA, l'opzione potrebbe essere denominata "relay host" o "smarthost" e quasi sempre accetta un host: specifica porta:

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

Se è necessaria l'autenticazione:

table relay-out-auth { "foo"="someuser:somepassword" }
accept for any relay via "tls+auth://foo@smtp.gmail.com:587" auth <relay-out-auth>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.