Como canalizar o postfix no controlador Codeigniter

1

Atualmente eu tenho um postfix em um script PHP para processar o email por meio de um alias.

catchall: |/var/www/vhosts/website/httpdocs/scripts/incoming_mail.php

No entanto, desejo usar a configuração do banco de dados, etc, fornecida em meu projeto de CI, portanto, preciso fornecer uma rota como:

catchall: |/var/www/vhosts/website/httpdocs/cli.php /incoming_mail

O resultado desejado disso é que eu corro o controlador incoming_mail.

Se eu tentar o acima, o e-mail é devolvido com o seguinte:

Action: failed
Status: 5.2.0
Diagnostic-Code: X-Postfix; cannot append message to file /incoming_mail:
cannot create file exclusively: Permission denied

Qualquer ajuda é muito apreciada!

    
por Jim Wright 07.05.2015 / 13:05

2 respostas

2

Cannot append message to file /incoming_mail: cannot create file exclusively: Permission denied

A mensagem de erro acima é lançada pelo postfix porque você diz para anexar o conteúdo do email a /incoming_mail , em vez de passar o argumento /incoming_mail para cli.php .

De acordo com man 5 aliases

|command

Mail is piped into command. Commands that contain special char- acters, such as whitespace, should be enclosed between double quotes. See local(8) for details of delivery to command.

Como você não está agrupando o comando que contém espaço em branco, o postfix interpretou /incoming_mail as filename

/file/name

Mail is appended to /file/name. See local(8) for details of delivery to file. Delivery is not limited to regular files. For example, to dispose of unwanted mail, deflect it to /dev/null.

Solução: coloque seu comando no arquivo de alias com aspas duplas

catchall: "|/var/www/vhosts/website/httpdocs/cli.php /incoming_mail"

PS: A solução Jommaar para usar transport_maps e pipe também pode ser usada:)

    
por 08.05.2015 / 03:57
2

Olá, aqui está como eu criei um analisador:

/etc/postfix/master.cf (postfix)

bounce-pipe    unix  -       n       n       -       -       pipe
    flags=BDFORXhqu user=deploy argv=/usr/bin/php5 /var/www/emailmanager/public/index.php

transporte (postfix)

[email protected] bounce-pipe:

index.php - obtém dados que você manipularia

$data = file_get_contents('php://stdin');
    
por 07.05.2015 / 14:39