Como evitar o envio automático de respostas quando um email é enviado para um alias no postfix?

2

Eu tenho um alias que tem 20 contas de e-mail. Então, quando um email é enviado para esse alias, todo mundo o recebe. Mas, quando ponho férias em uma dessas 20 contas de correio, a resposta automática também é enviada. Eu quero excluir esses casos - quando o e-mail não tem conta de e-mail específica no cabeçalho Para: ou Cc:. O script é chamado vacation.pl e é do postfixadmin.

Existe alguma maneira de fazer isso, exceto pela edição manual do script?

    
por John 24.02.2012 / 10:47

4 respostas

1

A resposta curta é "Não". Pelo menos se sua configuração e script forem semelhantes aos meus.

Hoje eu dei uma olhada mais de perto no vacation.pl que usamos em combinação com o Postfixadmin.

Eu assumo que é o mesmo, mas nunca se pode ter certeza, então seja cuidadoso. Nas primeiras linhas do script, diz o seguinte sobre a versão:

# Virtual Vacation 4.0
# $Revision: 893 $

No nosso caso, a ativação de uma resposta automática adiciona uma entrada como a seguinte na tabela de alias do postfix:

[email protected]@autoreply.example.org,[email protected]

O que significa que o e-mail será salvo na caixa de correio do Usuário e encaminhado para o domínio autoreply (autoreply.example.org).

Em um transportmap, há a seguinte entrada, que passará o email para o serviço de férias, conforme definido em master.cf:

   autoreply.example.org    vacation:

Para completar, aqui está a entrada no meu master.cf:

vacation unix - n n - - pipe
  flags=Rq user=vacation argv=/var/spool/vacation/vacation.pl -f ${sender} ${recipient}

Isso significa que o script vacation.pl é acionado depois que os aliases foram resolvidos.

Portanto, se você quiser evitar respostas automáticas a e-mails, que foram enviados para um alias, você precisará adicionar uma função ao script, que verificará o X-Original-To-Header, para que você possa verificar se o e-mail foi enviado para um Alias com mais de um destinatário.

Na linha 312, uma funão find_real_address é definida. Esta função irá procurar o endereço real (usuário).

Poderia ser possível usar uma versão modificada dessa função em combinação com o endereço de email no X-Original-To-Header para enviar uma resposta automática somente se o endereço de email não for um de um alias com vários destinatários.

Ainda não tentei nenhuma das sugestões acima, por isso tenha cuidado.

    
por 14.03.2012 / 11:36
0

Tudo depende de onde sua resposta de férias é gerada; normalmente, isso é feito com um link para um script no arquivo .forward da caixa de correio dos usuários.

Como isso não funciona para caixas de correio virtuais, existem várias alternativas - usando um filtro dedicado, transporte, MDA ou milter.

e provavelmente mais.

Você precisará fornecer informações mais detalhadas, incluindo pelo menos a saída de postconf -n e quaisquer arquivos de mapa que sejam relevantes para esse cenário.

Inclua também o registro de uma mensagem sendo enviada para esse alias da lista de distribuição e as mensagens resultantes, incluindo a resposta de férias.

    
por 24.02.2012 / 12:10
0

Eu estava procurando a mesma coisa, estou executando meu servidor de e-mail usando o Webmin, os e-mails auto-executáveis são executados usando o script /etc/webmin/virtual-server/autoreply.pl

Ao lê-lo, encontro este bloco:

if ($header{'x-mailing-list'} ||
$header{'list-id'} ||
$header{'precedence'} =~ /junk|bulk|list/i ||
$header{'to'} =~ /Multiple recipients of/i ||
$header{'from'} =~ /majordomo/i ||
$fromline =~ /majordomo/i) {
    # Do nothing if post is from a mailing list
    exit 0;
    }

Por isso, adicionei uma outra condição $header{'to'} =~ /my_alias_name_here/i || para que nunca seja enviada automaticamente para nenhum email enviado para esse alias.

Este é um hack rápido, talvez eu tenha algum tempo depois para listar todo o alias do servidor. Se você fez isso antes, por favor, compartilhe o script:)

    
por 30.12.2014 / 15:18
0

Corrigimos o problema acima alterando duas coisas:

1) Transmitindo o destinatário original em vez do destinatário do postfix para o script vacation.pl:

vacation    unix  -       n       n       -       -       pipe
  flags=Rq user=vacation argv=/usr/lib/postfixadmin/vacation.pl -f ${sender} -- ${recipient}

vacation    unix  -       n       n       -       -       pipe
  flags=Rq user=vacation argv=/usr/lib/postfixadmin/vacation.pl -f ${sender} -- ${original_recipient}

2) Adaptar o script vacation.pl para que não envie mensagens de férias para aliases com vários destinatários .

#MC        my $vemail = $email;
#MC        $vemail =~ s/\@/#/g;
#MC        $vemail = $vemail . "\@" . $vacation_domain;
#MC        $logger->debug("Looking for alias records that '$email' resolves to with vacation turned on");
#MC        my $query = qq{SELECT goto FROM alias WHERE address=? AND (goto LIKE ? OR goto LIKE ? OR goto LIKE ? OR goto = ?)};
#MC        $stm->execute($email,"$vemail,%","%,$vemail","%,$vemail,%", "$vemail") or panic_execute($query,"address='$email'");
        $logger->debug("Looking for alias records that '$email' resolves to with vacation turned on");
        my $query = qq{SELECT goto FROM alias WHERE address=?};
        my $stm = $dbh->prepare($query) or panic_prepare($query);
        $stm->execute($email) or panic_execute($query,"address='$email'");
        $rv = $stm->rows;

...

#MC do not send away-message to alias with multiple recipients
#                for (split(/\s*,\s*/, lc($alias))) {
#                    my $singlealias = $_;
#                    $logger->debug("Found alias \'$singlealias\' for email \'$email\'. Looking if vacation is on for alias.");
#                    $rv = check_for_vacation($singlealias);
## Alias has vacation
#                    if ($rv == 1) {
#                        $realemail = $singlealias;
#                        last;
#                    }
#                }
                $logger->debug("Found multiple aliases \'$alias\' for email \'$email\'. Thus, not sending vacation reply.");
                $realemail = $email;
                $rv = 0;
    
por 19.07.2017 / 11:11

Tags