2016-06-07 20 views
-1

So folgte ich [der Leitfaden] [1] auf, wie man einen einfachen Mail-Filter mit Postfix, so dass ich eine Suche machen kann -Austausch in den Körper von ausgehenden E-Mails. Ich habe ein Skript bei /tmp/mailfilter.sh, und änderte die /etc/postfix/master.cf Datei entsprechend der AnweisungVersuchen, einen After-Queue-Mail-Filter in Postfix auf CentOS hinzuzufügen, erhalten Sie die execvp-Berechtigung verweigert

# ========================================================================== 
# service type private unpriv chroot wakeup maxproc command + args 
#    (yes) (yes) (yes) (never) (100) 
# ========================================================================== 
smtp  inet n  -  n  -  -  smtpd 
     -o content_filter=filter:dummy 

filter unix -  n  n  -  10  pipe 
    flags=Rq user=filter null_sender= 
    argv=/tmp/mailfilter.sh -f ${sender} -- ${recipient} 

ich einen Benutzer namens Filter erstellt und es der Besitzer des Skripts gemacht. Aber als ich versuchte, eine E-Mail zu senden, erhalte ich folgende Fehlermeldung:

Jun 7 03:01:53 localhost postfix/qmgr[31288]: 134D944A0673: from=<[email protected]>, size=894, nrcpt=1 (queue active) 
Jun 7 03:01:53 localhost pipe[31603]: fatal: pipe_command: execvp /tmp/mailfilter.sh: Permission denied 
Jun 7 03:01:53 localhost postfix/pipe[31562]: 134D944A0673: to=<[email protected]>, relay=filter, delay=8974, delays=8974/0/0/0.01, dsn=4.3.0, status=deferred (temporary failure. Command output: pipe: fatal: pipe_command: execvp /tmp/mailfilter.sh: Permission denied) 

Insbesondere, was ich nehme an, dass relevant ist, ist

(temporary failure. Command output: pipe: fatal: pipe_command: execvp /tmp/mailfilter.sh: Permission denied) 

/tmp/mailfilter.sh chmod a + x hat und gehört zum Filter. Ich habe versucht, alles darin zu entfernen, so dass es nur eine leere Datei ist, und ich bekomme immer noch die Erlaubnis verweigert Fehler.

Ich kann nicht herausfinden, was ich vermisse. Ich habe jede Erlaubnis gesetzt, die ich finden kann, aber Postfix macht etwas Obskures, das ich nicht verstehe.

Antwort

2

CentOS verwendet SELinux als MAC-Framework, also müssen Sie möglicherweise den Typ Ihrer ausführbaren Datei richtig einstellen. Sie können in /var/log/audit/audit.log für Sicherheitsverletzungen einchecken. Wenn SELinux Sie verweigert, können Sie diesen Befehl als root versuchen:

chcon -t postfix_pipe_exec_t /tmp/mailfilter.sh 

Das Handbuch eine gute Referenz ist: http://linux.die.net/man/8/postfix_selinux