Como enviar arquivos de e-mail postfix / dovecot para um novo servidor

1

Havia um servidor postfix / dovecot funcionando em um domínio. O cliente decidiu usar o zoho e alterou os registros MX para o zoho. Antes do DNS ser propagado, cerca de cem e-mails foram enviados para o servidor original.

Então, dentro de /var/mail/vhosts/ravingo.in/rk/new , por exemplo ...

-rw------- 3 vmail vmail 24128 Sep 12 09:29 1473672547.M984731P30716.ravingo.ravingo.id,S=24128,W=24567 -rw------- 1 vmail vmail 52287 Sep 12 10:48 1473677302.M251841P31240.ravingo.ravingo.id,S=52287,W=53023 -rw------- 2 vmail vmail 165851 Sep 12 14:08 1473689331.M885291P32352.ravingo.ravingo.id,S=165851,W=168081

Existe uma maneira de canalizar essas mensagens para o Zoho, para que elas apareçam como e-mails comuns, com anexos, etc.?

    
por neokio 21.09.2016 / 18:56

1 resposta

1

Como cada arquivo em um Maildir já é uma mensagem de e-mail completa, é simples configurar uma sessão SMTP para o servidor de e-mail do Zoho e entregar essas mensagens novamente.

Um pouco trivial de perl:

#!/usr/bin/perl -w
#
## purpose: send the contents of a Maildir over SMTP
##
## usage:   perl this_program
#
my $MAILDIR = '/home/hbruijn/Maildir/cur/' ;

# The mailserver to deliver the messages to:
my $MAILHOST = 'smtp.example.com' ;

# The email address of the recipient on $MAILHOST:
my $RECIPIENT = '[email protected]' ;

# The email address of the sender in the SMTP envelope and the one to receive errors and bounces:
my $SENDER = '[email protected]' ;

use Net::SMTP;

foreach my $MESSAGE (glob("$MAILDIR/*")) {
        printf "%s\n", $MESSAGE;
        my $smtp = Net::SMTP->new($MAILHOST);
        $smtp->mail($SENDER);
        if ($smtp->to($RECIPIENT)) {
                $smtp->data();
                open my $fh, "<", $MESSAGE or die "can't read open '$MESSAGE': $OS_ERROR";
                while (<$fh>) {
                        $smtp->datasend($_);
                }
                $smtp->dataend();
                close $fh or die "can't read close '$MESSAGE': $OS_ERROR";
        } else {
                print "Error: ", $smtp->message();
        };
        $smtp->quit;
} 

Os trabalhos acima, mas são bastante crus, podem desencadear medidas anti-spam e definitivamente podem ser otimizados de várias maneiras.

    
por 21.09.2016 / 20:23