2016-06-07 4 views
-1

Итак, я последовал [руководству] [1] о том, как настроить простой почтовый фильтр с Postfix, чтобы я мог найти - заменить в тексте исходящих писем. Я создал сценарий в /tmp/mailfilter.sh, и изменил файл /etc/postfix/master.cf, как указаноПопытка добавить фильтр почты после очереди в Postfix on CentOS, получить разрешение на execvp

# ========================================================================== 
# 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} 

Я создал пользовательский фильтр называется и сделал его владелец сценария. Но когда я попытался отправки по электронной почте, я получаю следующее сообщение об ошибке:

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) 

В частности то, что я предполагаю, что это отношение является

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

/tmp/mailfilter.sh имеет CHMOD а + х и принадлежащих фильтру. Я попытался удалить все в нем, так что это всего лишь пустой файл, и я все еще получаю отказ в разрешении.

Я не могу понять, что мне не хватает. Я установил все разрешения, которые могу найти, но Postfix делает что-то тайное, что я не понимаю.

ответ

2

CentOS использует SELinux как среду MAC, поэтому, возможно, вам необходимо правильно установить тип исполняемого файла. Вы можете проверить в /var/log/audit/audit.log за любое нарушение безопасности. Если SELinux отказывает, вы можете попробовать эту команду, как root:

chcon -t postfix_pipe_exec_t /tmp/mailfilter.sh 

Это руководство является хорошим справочником: http://linux.die.net/man/8/postfix_selinux