Добрый день, всем!Система FreeBSD 7.2.
Весь софт установлен из портов.
Sendmail - MTA. Procmail - LDA. Dovecot - pop3/imap server.
Почту переконвертировал в maildir формат и, соответственно, складывается она по одному письмишку в каталог cur пользователя.
Проблема в том, что новые письма туда кладутся с владельцем рута и правами 700, т.е. почту читать можно исключительно руту.
В логе dovecot я, соответственно, получаю:
Код:
Error: open(/usr/home/spam/.maildir/cur/1289147747.8685_0.my.server.ru:2,) failed: Permission denied (euid=1017(spam) egid=1001(mailusers) missing +r perm: /usr/home/spam/.maildir/cur/1289147747.8685_0.my.server.ru
Sendmail запущен от рута, соответственно procmail вызывается тоже от рута - в этом проблема?
Можно ли решить трабл правкой конфига dovecot'a?
конфиг dovecot:
-------------------
ase_dir = /var/run/dovecot/
protocols = imap pop3
disable_plaintext_auth = no
shutdown_clients = yes
log_path = /var/log/dovecot/dovecot-error.log
info_log_path = /var/log/dovecot/dovecot-info.log
log_timestamp = "%b %d %H:%M:%S "
#syslog_facility = mail
#----------SSL---------------
#ssl_listen=
ssl = no
#ssl_cert_file = /etc/ssl/certs/dovecot.pem
#ssl_key_file = /etc/ssl/private/dovecot.pem
#ssl_key_password =
#ssl_ca_file =
#ssl_verify_client_cert = no
#ssl_cert_username_field = commonName
#ssl_parameters_regenerate = 168
#ssl_cipher_list = ALL:!LOW:!SSLv2
#verbose_ssl = no
#----------SSL---------------
login_dir = /var/run/dovecot/login
login_chroot = yes
login_user = dovecot
#login_process_size = 64
login_process_per_connection = yes
#login_processes_count = 3
login_max_processes_count = 30
#only, if login_process_per_connection = yes
#login_max_connections = 256
login_greeting = Faeton's IMAP4/POP3 server ready!
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s
mail_location = maildir:%h/%u/email/
#mail_uid =
#mail_gid =
mail_privileged_group = mail
mail_full_filesystem_access = no
mail_debug = yes
#mail_log_prefix = "%Us(%u): "
#this feature si ignored, when mail_debug=yes
#mail_log_max_lines_per_sec = 10
#--------Don't use these settings----------
#mmap_disable = no
#fsync_disable = no
#--------Don't use these settings----------
dotlock_use_excl = yes
#lock_method = fcntl
#mail_drop_priv_before_exec = no
verbose_proctitle = yes
first_valid_uid = 1000
#last_valid_uid = 0
first_valid_gid = 1000
#last_valid_gid = 0
max_mail_processes = 100
#mail_process_size = 256
#mail_max_keyword_length = 50
#valid_chroot_dirs =
#mail_chroot =
#--------------Maildir specific settings--------------
#maildir_stat_dirs = no
maildir_copy_with_hardlinks = yes
#maildir_copy_preserve_filename = no
#maildir_very_dirty_syncs = no
#--------------Maildir specific settings--------------
protocol imap {
#login_executable = /usr/local/libexec/dovecot/imap-login
#mail_executable = /usr/local/libexec/dovecot/imap
#imap_max_line_length = 65536
#mail_max_userip_connections = 10
#mail_plugins =
#mail_plugin_dir = /usr/local/lib/dovecot/imap
#imap_logout_format = bytes=%i/%o
#imap_capability =
#imap_idle_notify_interval = 120
#imap_id_send =
#imap_id_log =
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
listen = *:143
}
protocol pop3 {
#login_executable = /usr/local/libexec/dovecot/pop3-login
#mail_executable = /usr/local/libexec/dovecot/pop3
#pop3_no_flag_updates = no
#pop3_enable_last = no
#pop3_reuse_xuidl = no
#pop3_lock_session = no
pop3_uidl_format = XuXv
#pop3_save_uidl = no
#pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s
#mail_max_userip_connections = 3
#mail_plugins =
#mail_plugin_dir = /usr/local/lib/dovecot/pop3
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
listen = *:110
}
#auth_executable = /usr/local/libexec/dovecot/dovecot-auth
#auth_process_size = 256
#auth_cache_size = 0
#auth_cache_ttl = 3600
#auth_cache_negative_ttl = 3600
#auth_realms =
#auth_default_realm =
#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@
#auth_username_translation =
auth_username_format = %Lu
#auth_master_user_separator =
#auth_anonymous_username = anonymous
#auth_verbose = no
auth_debug = yes
#auth_debug_passwords = no
#auth_worker_max_count = 30
#auth_gssapi_hostname =
#auth_krb5_keytab =
#auth_use_winbind = no
#auth_winbind_helper_path = /usr/local/bin/ntlm_auth
#auth_failure_delay = 2
auth default {
mechanisms = plain login
#passdb passwd-file {
#args = /usr/local/etc/dovecot.deny
#deny = yes
#}
#passdb pam {
#args = dovecot
#args = session=yes dovecot
#}
#passdb passwd {
#args =
#}
#passdb shadow {
#args =
#}
#passdb bsdauth {
#args =
#}
#passdb passwd-file {
#args =
#}
#passdb checkpassword {
#args =
#}
#passdb sql {
#args = /usr/local/etc/dovecot-sql.conf
#}
#passdb ldap {
#args = /usr/local/etc/dovecot-ldap.conf
#}
#passdb vpopmail {
#args =
#}
#userdb prefetch {
#}
userdb passwd {
#args =
}
#userdb passwd-file {
#args =
#}
#userdb checkpassword {
#args =
#}
#userdb static {
#args =
#}
#userdb sql {
#args = /usr/local/etc/dovecot-sql.conf
#}
#userdb ldap {
#args = /usr/local/etc/dovecot-ldap.conf
#}
#userdb vpopmail {
#}
#Only shadow and pam authentication requires roots!
#user = root
#chroot =
#count = 1
#ssl_require_client_cert = no
#ssl_username_from_cert = no
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
#user =
#group =
}
client {
path = /var/run/dovecot/auth-client
mode = 0660
}
}
}
#auth external {
# socket connect {
# master {
# path = /var/run/dovecot/auth-master
# }
# }
#}
#dict {
#quota = mysql:/usr/local/etc/dovecot-dict-quota.conf
#expire = db:/var/db/dovecot/expire.db
#}
#dict_db_config = /usr/local/etc/dovecot-db.conf
#plugin {
#quota = maildir
#acl = vfile:/usr/local/etc/dovecot-acls:cache_secs=300
#acl_shared_dict = file:/var/lib/dovecot/shared-mailboxes
#convert_mail = mbox:%h/mail
#convert_skip_broken_mailboxes = no
#convert_skip_dotdirs = no
#convert_alt_hierarchy_char = _
#trash = /usr/local/etc/dovecot-trash.conf
#expire = Trash 7 Spam 30
#expire_dict = proxy::expire
#lazy_expunge = .EXPUNGED/ .DELETED/ .DELETED/.EXPUNGED/
#mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
#mail_log_group_events = no
#mail_log_fields = uid box msgid size
#sieve=~/.dovecot.sieve
#sieve_dir=~/sieve
#}
#!include /usr/local/etc/dovecot/conf.d/*.conf
#!include_try /usr/local/etc/dovecot/extra.conf
-------------------
конфиг procmail:
-------------------
MAILDIR=$HOME/.maildir/
DEFAULT=$MAILDIR/
LOGFILE=/var/log/procmaillog
LOGABSTRACT=no
VERBOSE=on
:0
* ^Subject:.*SPAM
/usr/home/spam/.maildir/
-------------------
т.е., еще раз поясню всю схемы работы и проблему:
Письмо приходит и кладется в папку пользователя-адресата при помощи локального доставщика в виде procmail. У меня все пользователи системные, - соответственно и почта кладется в их домашние каталоги.
До того, как я решил использовать dovecot вся почта хранилась в формате mbox и лежала в /var/mail/$USERs_mbox.
Так как довекот хочу юзать и как имап сервер тоже, решил переконвертировать почтовые каталоги в формат maildir и сделать домашние каталоги хранилищем для писем каждого пользователя.
Как известно, в этом формате каждое письмо - отдельный файл. Так вот когда это письмо приходит - файл создается с владельцем root и правами 700.
Задача - сделать так, чтобы новые письма создавались с правами действительных владельцев.
Помогите разобраться, плиз...