Como rotear o email para um script

3

O que eu gostaria de fazer é configurar um endereço como [email protected], que receberá o email que receber e exibirá a mensagem completa como STDIN em um script de shell. Eu não consigo fazer isso funcionar. Tentei algumas soluções, incluindo esta:

Como posso encaminhar alguns e-mails para um script no Postfix?

Mas minha configuração é um pouco diferente. Eu tenho a configuração Postfix / Dovecot / MySQL, então todos os e-mails são manipulados pelo Dovecot, e o Postfix lê seus mapas do MySQL. Tudo o que eu adiciono ao master.cf não parece funcionar. O SpamAssassin tem uma linha lá e está funcionando bem. Estou preso!

EDITAR: Eu realmente gostaria que as pessoas lessem atentamente antes de fazerem downvoting da minha pergunta. Eu estou usando o MySQL para meus alias maps, então o / etc / aliases não funciona, eu já tentei isso, é claro.

    
por CaptSaltyJack 11.05.2013 / 06:36

5 respostas

4

Obviamente, trabalhará a resposta de Douglas Land, com um pequeno acréscimo.
Suponha que você tenha apenas localhost.localdomain em $ mydestination em main.cf.
Em seguida, adicione um alias virtual:

[email protected] -> [email protected]

No main.cf você precisará:

alias_maps=hash:/etc/aliases

Em seguida, adicione a / etc / aliases:

somelocaluser: "|/your/script/here"

newaliases + postfix reload e você está pronto.

    
por 12.05.2013 / 05:20
1

Eu iria com o Procmail. Usamos isso para analisar todos os tipos de mensagens para scripts de trabalho e bots de IRC para notificações.

Aqui está um exemplo de como lidar com e-mail. link

Exemplo breve relevante feito aqui para facilitar:

  1. Crie um usuário local chamado handler , por exemplo.

  2. Vá para o diretório pessoal de handler e crie um arquivo chamado .procmailrc contendo:

:0
| $HOME/bin/my.script

Isso passará todo o email de entrada para o script $HOME/bin/my.script por meio de STDIN.

Também aqui é onde eu recebi ajuda com o Procmail quando eu estava tentando passar o email para um script: Como usar o procmail para colocar uma mensagem em uma variável

    
por 13.05.2013 / 22:43
1

Você pode enviar uma entrada para um script por meio de /etc/aliases , RE:

foo: "|/your/script/here"

modifique /etc/aliases , em seguida, execute newaliases e recarregue o processo de postfix.

    
por 11.05.2013 / 07:35
0

Eu verificaria se a peneira suporta a canalização para um script. O Dovecot suporta scripts de peneiras.

Como alternativa, você pode usar o "procmail" como MDA entre o postfix e o dovecot. O Procmail pode canalizar para um script.

(que disse eu me pergunto por que a resposta de Douglas Land não funciona, mysql como backend não deve fazer um diferente?!) "

    
por 11.05.2013 / 22:52
0

Algo que não foi mencionado é que você pode usar mais de uma tabela de pesquisa (separado por vírgula ou espaço):

virtual_alias_maps = mysql:/etc/postfix/mysql-virtual.cf
alias_maps = mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases

O primeiro (virtual_alias_maps) procurará um email e retornará um nome de usuário (por exemplo: [email protected] - > info1234).

Em seguida, o segundo (alias_maps) procurará um nome de usuário no seu banco de dados, se não for encontrado, irá procurar em / etc / aliases. Dessa forma, você ainda pode gerenciar seus aliases no MySQL e configurar seus scripts em / etc / aliases, e não é necessário acrescentar "@ localhost.localdomain" aos usuários locais.

Para testar se sua configuração está correta, use:

postmap -q [email protected] mysql:/etc/postfix/mysql-virtual.cf
postmap -q info1234 mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases

Usando contas locais com aliases no MySQL:

Em uma das minhas configurações personalizadas, estou usando contas locais apenas para usuários e MySQL para aliases. Então é assim que eu configurei:

virtual_alias_maps = hash:/etc/postfix/vusers
smtpd_sender_login_maps = hash:/etc/postfix/vusers
virtual_alias_domains = /etc/postfix/vhosts
alias_maps = mysql:/etc/postfix/mysql-aliases.cf hash:/etc/aliases

Como você pode ver, sinta-se à vontade para mixá-los como quiser.

    
por 26.09.2016 / 06:48

Tags