Я использую exim4 в Debian 8. Я использую maildir. у меня есть Фильтр Exim файл, который пытается хранить входящую почту в папках, названных по их домену.
Проблема в том, что когда Exim создает новый каталог, разрешения равны 700, но они должны быть 770.
Маршрутизатор:
v_user_filters:
driver = redirect
domains = dsearch;/etc/exim4/virtual_domains
local_parts = lsearch;/etc/exim4/virtual_domains/$domain/passwords
user = virtual
group = virtual
check_owner = false
file = /home/virtual/$domain/$local_part/filter.forward
no_verify
no_expn
check_ancestor
allow_filter
forbid_smtp_code = true
directory_transport = address_directory
file_transport = address_file
pipe_transport = address_pipe
reply_transport = address_reply
Транспорт:
address_file:
driver = appendfile
delivery_date_add
envelope_to_add
return_path_add
directory_mode = 0770
Обратите внимание directory_mode
который по-видимому Является ли это:
Если appendfile создает какие-либо каталоги в результате опции create_directory, их режим определяется этой опцией.
Фильтр:
# exim filter
# File by domain.
if ${sg{${sg{$reply_address}{^.*?@}{}}}{>\$}{}} matches "^[a-zA-Z0-9-](\.[a-zA-Z
then
# This horrible regex substitution:
# inner sg: strip off everything from beginning of reply_address to and incl @
# middle sg: strip off trailing > if found
# outer sg: convert dots to - since dots mean sub-folders and we don't want example/com we want example-com
save /home/virtual/$domain/$local_part/.${sg{${sg{${sg{$reply_address}{^.*?@
finish
endif
Проблема в том, что когда Exim создает новый каталог, разрешения равны 700, но они должны быть 770.
Нет, они этого не делают.
Ваша проблема в том, что серверы exim и POP / IMAP имеют разные эффективные идентификаторы UID. Таким образом, вы помещаете их обоих в одну группу и хотите, чтобы они сотрудничали через один и тот же GID.
Есть менее сложный подход с большим количеством преимуществ. Используйте LDA из пакета POP / IMAP. В случае dovecot
Там есть deliver
утилита, которая может быть вызвана из транспорта eximʻa:
begin transports
local:
driver = pipe
user = dovenull
command = /path/dovecot/deliver -d $local_part@$domain -f $sender_address
temp_errors = 64 : 69 : 70: 71 : 72 : 73 : 74 : 75 : 78
envelope_to_add
return_path_add
delivery_date_add
log_output
begin routers
. . . . .
local_user:
driver = accept
domains = dsearch;/etc/exim4/virtual_domains
local_parts = lsearch;/etc/exim4/virtual_domains/$domain/passwords
transport = local
. . . . .
Теперь все сообщения для локальных пользователей будут доставляться LDA dovecot в место, указанное mail_location = maildir:/var/mail/%d/%n
Если вам нужна дополнительная фильтрация / сортировка, вы должны использовать sieve
вместо фильтров eximʻa.