Come posso impostare Amazon SES come metodo predefinito per l'invio di posta dal mio server?


14

Vorrei iniziare a utilizzare Amazon SES per tutte le e-mail dal nostro server. Abbiamo alcuni designer freelance con hosting PHP, alcune app web Django / Python e anche alcune utility di sistema che inviano e-mail.

Quindi mi piacerebbe avere la funzione di posta di PHP, il comando di posta della riga di comando e le nostre app Python in grado di usarlo, preferibilmente senza doverle impostare tutte a modo loro.

Penso che ciò di cui ho bisogno sia avere qualcosa come Postfix in esecuzione su localhost e utilizzare SES per la sua consegna, ma non so come farlo.

I documenti di Amazon affermano che devo configurare il mio agente di trasferimento di posta (MTA) in modo che invochi lo script ses-send-email.pl. Ho la sceneggiatura ma non sono sicuro di come raggiungere questo obiettivo.

Sono sulla buona strada? In tal caso, come posso configurare Postfix per usare quello script?

Risposte:



14

Ecco alcuni elementi copiati dalla guida per sviluppatori SES :

Per integrare ses-send-email.pl con Postfix:

  1. Apri il file master.cf. Su molti sistemi, questo file risiede nella /etc/postfixdirectory.
  2. Configurare un nuovo trasporto di posta aggiungendo le seguenti due righe al master.cffile e quindi salvando il file.

    aws-email  unix  -       n       n       -       -       pipe
      flags=R user=mailuser argv=/opt/third-party/amazon/ses-send-email.pl -r -k /opt/third-party/amazon/aws-credentials -e https://email.us-east-1.amazonaws.com -f ${sender} ${recipient}
    

Nota quanto segue su questo esempio:

  • La linea delle bandiere inizia con almeno un carattere di spazio bianco.
  • Il parametro utente deve specificare un utente non root (ovvero un utente non amministrativo). L'utente mailuserè solo a scopo illustrativo.
  • Lo ses-send-email.plscript e il file delle credenziali si trovano nella directory / opt / terze parti / amazon.
  • L'endpoint per la comunicazione con Amazon SES è https://email.us-east-1.amazonaws.com

È necessario modificare questi parametri come appropriato.

  1. Aprire il file main.cf nella stessa directory di master.cf e modificarlo come segue:

    1. Cerca la riga default_transport:

      • Se esiste, cambiarlo in modo che assomigli a questo:

        default_transport = aws-email
        
      • Se non esiste, quindi aggiungere una nuova riga con il contenuto precedente.

    2. Salva il file main.cf quando hai finito.
  2. Riavvia il tuo server Postfix.

    /etc/init.d/postfix restart
    

Si noti che questo comando potrebbe non essere esattamente lo stesso sul proprio server. Da questo momento in poi, l'e-mail in uscita viene inviata tramite Amazon SES. Puoi verificarlo inviando un messaggio e-mail tramite il tuo server Postfix e verificando che arrivi a destinazione. Se il messaggio non viene recapitato, controllare la presenza di errori nel registro di posta del sistema. Su molti sistemi, questo è il/var/log/mail.log

- Ho creato un semplice blog mettendo insieme tutte le cose che ho provato di recente in Amazon Cloud e SES. Ecco il link: http://netwiser.blogspot.com/2011/02/setup-amazon-ses-to-relay-email-by.html


Fantastico, grazie. Presumo che ciò significhi che la configurazione di postfix è il modo giusto per risolvere il mio problema. Ci proverò e accetterò presto la tua risposta.
Jake,

1

Dato che stai ospitando app Python / Django sul tuo server, potresti trovare preferibile collegare Postfix all'equivalente Python degli script AWS Perl. Questa guida contiene i dettagli:

http://aws.amazon.com/articles/2405502737055650

In alternativa, se si desidera utilizzare gli script Perl ma si è scoperto (come me) che i moduli CPAN sono orribilmente obsoleti, un percorso più semplice potrebbe essere l'installazione delle dipendenze tramite il gestore pacchetti del sistema operativo. Ad esempio, su Ubuntu, puoi farlo con:

sudo apt-get install libio-socket-ssl-perl libxml-libxml-perl
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.