邮箱中新文件的Postfix / Dovecot权限

根据这篇文章 :

在邮箱内创build新文件时,Dovecot从邮箱目录复制读写权限。

我没有看到这个 这是我所看到的:

andrewsav@hroon-precis:~$ dovecot --version 2.0.19 andrewsav@hroon-precis:~$ sudo ls -al /var/mail/vhosts/myhost.com/andrews total 76 d-wxrws--- 6 vmail vmail 4096 May 15 19:53 . drwxrwsr-x 4 vmail vmail 4096 Mar 8 07:27 .. drwxrws--- 2 vmail vmail 4096 May 15 19:53 cur -rw-rwS--- 1 vmail vmail 288 May 12 20:49 dovecot.index -rw-rwS--- 1 vmail vmail 31316 May 15 19:53 dovecot.index.log -rw-rwS--- 1 vmail vmail 24 Dec 13 14:27 dovecot.mailbox.log -rw-rw---- 1 vmail vmail 54 May 15 19:53 dovecot-uidlist -rw-rwS--- 1 vmail vmail 8 Dec 13 14:32 dovecot-uidvalidity -r--rwSr-- 1 vmail vmail 0 Dec 12 22:34 dovecot-uidvalidity.50c84fbc drwxrws--- 2 vmail vmail 4096 May 15 21:15 new -rw-rwS--- 1 vmail vmail 6 Dec 13 14:27 subscriptions drwxrws--- 2 vmail vmail 4096 May 15 21:15 tmp drwxrws--- 5 vmail vmail 4096 Dec 13 14:32 .Trash andrewsav@hroon-precis:~$ sudo ls -al /var/mail/vhosts/myhost.com/andrews/new total 24 drwxrws--- 2 vmail vmail 4096 May 15 21:15 . d-wxrws--- 6 vmail vmail 4096 May 15 19:53 .. -rw------- 1 vmail vmail 3435 May 15 19:54 1368604473.Vca02I500e0M443155.hroon-precis -rw------- 1 vmail vmail 4028 May 15 20:42 1368607343.Vca02I500e1M96785.hroon-precis -rw------- 1 vmail vmail 4623 May 15 21:15 1368609338.Vca02I500fcM737208.hroon-precis andrewsav@hroon-precis:~$ 

邮件目录有rw的组,并且由于某种原因,新目录中的单个文件没有rw。 正因为如此,他们不能被他们希望被访问的人/进程访问。 我错过了什么?

我正在运行的Ubuntu 12.04LTS

更新1

给一些背景:我已经运行了很长一段时间的postfix + dovecot。 根据这个文件安装了一些小的偏差。 通常邮箱不是本地访问,我通过远程客户端通过POP / IMAP访问。

但是我觉得在服务器上偶尔运行mutt会很有用。 如果我运行它,我可以做到

 sudo mutt -f /var/mail/vhosts/myhost.com/andrews 

但是我想能够在没有 sudo的情况下运行,这就是麻烦的起因。 我将myslef添加到vmail组中,并将以下行添加到.muttrc中:

 set spoolfile = '/var/mail/vhosts/myhost.com/andrews/' alternates myhost.com set reverse_name = yes set from = '[email protected]' 

但是这不起作用,除非我明确地对new和cur进行chmod g + rw。 它只有在新邮件到达之前才起作用,因为新邮件没有这个rw。

无论如何,我可以解决这个问题吗?

更新2

在和NickW讨论这个问题后,我们得出结论,实际上Postfix是在写这些文件,而不是Dovecot。 LDA很可能是Postfix虚拟的 。 这是Postfixconfiguration。

main.cf:

 # See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/apache2/ssl/my.crt smtpd_tls_key_file=/etc/apache2/ssl/my.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = myhost.myhost.com alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname #mydestination = myhost.com, hroon-precis, localhost.localdomain, localhost relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes #smtpd_tls_wrappermode=yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_tls_auth_only = no #smtpd_sasl_security_options = noanonymous, noplaintext smtpd_tls_security_level=may virtual_mailbox_domains = myhost.com virtual_mailbox_base = /var/mail/vhosts virtual_mailbox_maps = hash:/etc/postfix/vmailbox virtual_minimum_uid = 100 virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_maps = hash:/etc/postfix/virtual mydomain = myhost.com transport_maps = hash:/etc/postfix/transport 

master.cf

 # # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd #smtp inet n - - - 1 postscreen #smtpd pass - - - - - smtpd #dnsblog unix - - - - 0 dnsblog #tlsproxy unix - - - - 0 tlsproxy #submission inet n - - - - smtpd # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #smtps inet n - - - - smtpd # -o syslog_name=postfix/smtps # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #628 inet n - - - - qmqpd pickup fifo n - - 60 1 pickup cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - n 300 1 oqmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp relay unix - - - - - smtp # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - nn - - local virtual unix - nn - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - nn - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} # # ==================================================================== # # Recent Cyrus versions can use the existing "lmtp" master.cf entry. # # Specify in cyrus.conf: # lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4 # # Specify in main.cf one or more of the following: # mailbox_transport = lmtp:inet:localhost # virtual_transport = lmtp:inet:localhost # # ==================================================================== # # Cyrus 2.1.5 (Amos Gouaux) # Also specify in main.cf: cyrus_destination_recipient_limit=1 # #cyrus unix - nn - - pipe # user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user} # # ==================================================================== # Old example of delivery via Cyrus. # #old-cyrus unix - nn - - pipe # flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user} # # ==================================================================== # # See the Postfix UUCP_README file for configuration details. # uucp unix - nn - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - nn - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - nn - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - nn - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - nn - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} 

运输:

 [email protected] discard: [email protected] discard: [email protected] discard: 

vmailbox:

 [email protected] myhost.com/user1/ [email protected] myhost.com/user2/ ... etc [email protected] myhost.com/andrews/ @myhost.com myhost.com/andrews/ 

我search了Postfix的文档,我无法find一个方法来指定邮箱内新build邮件文件的Postfix权限。

我的想法是,这可能是不可能的,然后必须有另一种方式设置mutt,以便它可以访问maildirs,而不需要做sudo /根。

任何提示都表示赞赏。

我在这里回答,而不是评论,所以我可以格式正确。
既然你有鸽子,你应该已经安装了lda(它在鸽舍核心)。 添加到/etc/postfix/master.cf:

 dovecot unix - nn - - pipe flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient} 

添加到/etc/postfix/main.cf:

 virtual_transport = dovecot dovecot_destination_recipient_limit = 1 

更改/etc/dovecot/conf.d/15-lda.conf:

 protocol lda { postmaster_address = [email protected] log_path = /var/log/dovecot-deliver info_log_path = /var/log/dovecot-deliver } 

(虽然非常可选,{}之间的3行)
postmaster_address是退回邮件的发件人地址

更改/etc/dovecot/conf.d/10-master.conf:

 service auth { ... unix_listener auth-userdb { mode = 0666 user = vmail group = vmail } ... } 

将/ etc / postfix / vmailbox中的所有用户添加到/ etc / postfix / virtual中,如下所示:

 [email protected] [email protected] [email protected] [email protected] ... etc 

将catch-all移动到/ etc / postfix / virtual:

 @myhost.com [email protected] 

更改/etc/dovecot/conf.d/15-lda.conf:

 lda_mailbox_autocreate = yes 

这将自动创build缺席的maiboxes

要保留丢弃规则,请添加到main.cf:

 mydestination=localhost.localdomain 

添加到/ etc / postfix / virtual:

 [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] 

然后到/ etc / aliases:

 devnull: /dev/null 

这些来自/etc/postfix/main.cf的行不再需要,可以删除:

 #virtual_mailbox_base = /var/mail/vhosts #virtual_minimum_uid = 100 #virtual_uid_maps = static:5000 #virtual_gid_maps = static:5000 #transport_maps = hash:/etc/postfix/transport 

  • newaliases这个
  • postmap / etc / postfix / virtual
  • 服务后缀重新启动
  • 服务dovecot重启

并希望它的工作。

您可以将Dovecot设置为您的LDA,作为解决问题的方法。 这样virtual不会尝试在本地发送邮件,而是将其传递给Dovecot。

根据dovecot文档,这样做的首选方法是通过LMTP。

我保留的虚拟设置仍然可以工作,但是当实际将邮件传递到这些域时,它将使用virtual_transport设置的内容,而不是直接传递邮件。

这是Debian Wheezy上的工作configuration,它使用Dovecot 2.x:

dovecot.conf:

 protocols = imap lmtp service lmtp { unix_listener /var/spool/postfix/private/dovecot-lmtp { mode = 0600 user = postfix group = postfix } user = vmail } protocol lmtp { postmaster_address = [email protected] } 

main.cf:

 virtual_mailbox_domains = example.org virtual_alias_maps = hash:/etc/postfix/virtual virtual_transport = lmtp:unix:private/dovecot-lmtp # Don't need these anymore #virtual_uid_maps = static:5000 #virtual_gid_maps = static:5000 #virtual_minimum_uid = 1000 #virtual_mailbox_maps = hash:/etc/postfix/virtual_mailbox_users #virtual_mailbox_base = /var/mail