2012-04-04 9 views
1

Ich habe derzeit einen Postfix-Dienst ausgeführt, der E-Mails sendet und empfängt. Ich versuche, die "Test" -Adresse zu aliasieren, um ein PHP-Skript auszuführen. Siehe Auszug der Alias-Datei unten.PHP-Skript nicht ausgeführt, wenn Alias ​​an eine E-Mail-Adresse in Postfix

test: "| php -q /var/blahblahblah/php/test.php" 

Hier ist der Inhalt von test.php. Dies scheint in der Befehlszeile korrekt zu funktionieren.

#!/usr/bin/php 
<?php 
$file = fopen("/tmp/postfixtest", "a"); 
fwrite($file, "Script successfully ran at ".date("Y-m-d H:i:s")."\n"); 
fclose($file); 
?> 

Im Folgenden finden Sie einen Auszug aus dem mail.log mit den wichtigsten Zeilen.

postfix/qmgr[3427]: 02BE9472A: from=<[email protected]>, size=1681, nrcpt=1 (queue active) 
postfix/virtual[3435]: 02BE9472A: to=<[email protected]>, relay=virtual, delay=0.45, delays=0.42/0.01/0/0.02, dsn=2.0.0, status=sent (delivered to maildir) 
postfix/qmgr[3427]: 02BE9472A: removed 

Beachten Sie das in Klammern angegebene Maildir-Bit. Soll das so etwas wie "An Drehbuch geliefert" sagen?

Alle Dateien werden jetzt auf 777 Berechtigungen und die Aliase Dateien aktualisiert werden gehalten durch sudo newaliases mit

Es scheint, als ob der PHP-Skript nicht richtig aufgerufen wird, aber ich bekomme keine ‚Fehler‘ in jedem der Protokolle.

Hat jemand das schon mal erlebt oder behoben?

+0

Haben Sie die Alias-Datei nach dem Hinzufügen dieser neu laden? Einige Installationen haben den Befehl 'newaliases' oder' newaliases.postfix' oder starten Postfix einfach neu. –

+0

Ich würde nicht erwarten, dass es scheitert, aber ich habe noch nie einen Alias ​​mit Leerzeichen gesehen. Versuchen Sie, den führenden Platz 'test:" | php -q /path/to/script.php "' zu entfernen –

Antwort

1

von man 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. 

     When the command fails, a limited amount of command output is 
     mailed back to the sender. The file /usr/include/sysexits.h 
     defines the expected exit status codes. For example, use "|exit 
     67" to simulate a "user unknown" error, and "|exit 0" to imple- 
     ment an expensive black hole. 

so würde ich erwarten, dass dies ist, was gemeint ist:

test: |"php -q /var/blahblahblah/php/test.php"