From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <466EA1E0.50606@stc.donpac.ru> Date: Tue, 12 Jun 2007 17:38:40 +0400 From: Eugene Prokopiev User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru-RU; rv:1.7.2) Gecko/20040808 X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: ALT Linux sysadmin discuss References: <466CD956.4030104@stc.donpac.ru> <466D13BB.5010900@stc.donpac.ru> <20070611100208.GA528@lks.home> <466D3066.7070907@stc.donpac.ru> <466D74EC.10509@tangramltd.com> <466D9578.2070707@stc.donpac.ru> <466DB7B4.9090106@stc.donpac.ru> <20070611210436.GA4326@lks.home> <466E4E74.3030109@stc.donpac.ru> <466E5596.1080203@tangramltd.com> <466E674C.8090902@stc.donpac.ru> In-Reply-To: <466E674C.8090902@stc.donpac.ru> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Sysadmins] =?koi8-r?b?cG9wMy3TxdLXxdIg0yB1c2Vycy9wYXNzd29yZHMv?= =?koi8-r?b?bWJveCBuYW1lcyDXIHBsYWluIHRleHQgZmlsZQ==?= X-BeenThere: sysadmins@lists.altlinux.org X-Mailman-Version: 2.1.9rc1 Precedence: list Reply-To: ALT Linux sysadmin discuss List-Id: ALT Linux sysadmin discuss List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Jun 2007 13:38:47 -0000 Archived-At: List-Archive: Eugene Prokopiev пишет: > Slava Dubrovskiy пишет: > >>Eugene Prokopiev пишет: >> >> >>>>... чтобы не только виртуальным >>>>пользователям письма приходили. >>>> >>> >>>Что-то я совсем не могу придумать, как им почту доставить. >>> >>># cat /etc/postfix/master.cf: >>> >>>... >>>dovecot unix - n n - - pipe >>> flags=DRhu user=mail:mail argv=/usr/lib64/dovecot/deliver -d ${recipient} >>> >>>Т.е. доставлять будет deliver от имени mail:mail, а поэтому доставлять >>>особо некуда, кроме как в /var/mail (т.е. в конфиге dovecot пишем >>>mail_location = mbox:~/mail:INBOX=/var/mail/%u), однако при: >>> >>># su - mail -s /bin/bash >>>-bash-3.1$ echo hello | /usr/lib64/dovecot/deliver -d john >>> >>>имеем: >>> >>>Jun 12 11:37:52 myhost deliver(john): setgid(502) failed: Operation not >>>permitted >>> >>>И даже при попытке доставить от рута: >>> >>># echo hello | /usr/lib64/dovecot/deliver -d john >>> >>>имеем: >>> >>>Jun 12 11:39:20 myhost deliver(john): >>>open(/var/mail/.temp.myhost.mydomain.com.10301.d7b0885e7c76d2d7) failed: >>>Permission denied >>>Jun 12 11:39:20 myhost deliver(john): file_lock_dotlock() failed with mbox >>>file /var/mail/john: Permission denied >>>Jun 12 11:39:20 myhost deliver(john): msgid=: save failed to INBOX >>> >>>как быть? >>> >>> >> >>Еще нужно в dovecot.conf >>first_valid_gid = 12 >>last_valid_gid = 12 >> >>И еще >> user = postfix >> group = postfix >> >>в секции настройки socket listen >>А вообще там controll dovecot этим рулит > > > все эти настройки ни на что не влияют - я по прежнему получаю Permission > denied при попытке доставить почту системному пользователю Параметры uid/gid в настройках Dovecot не могут ни на что повлиять, т.к. Postfix запускает deliver c mail:mail, т.о., доставлять можно только туда, куда имеет доступ mail:mail. Поэтому такая конфигурация, предполагающая хранение почты системных и виртуальных пользователей вместе, теоретически должна бы работать: # cat /etc/dovecot/dovecot.conf protocols = pop3 shutdown_clients = yes ssl_disable = yes mail_extra_groups = mail first_valid_uid = 8 last_valid_uid = 8 first_valid_gid = 12 last_valid_gid = 12 mail_location = mbox:/data/mail/%u mbox_min_index_size = 0 lock_method = fcntl protocol pop3 { pop3_uidl_format = %08Xu%08Xv } protocol lda { postmaster_address = postmaster@myhost.mydomain.com auth_socket_path = /var/run/dovecot/auth-master } auth default { mechanisms = plain passdb pam { } #userdb passwd { #} passdb passwd-file { args = /etc/dovecot/dovecot.passwd } userdb static { args = uid=8 gid=12 home=/data/mail/%u } user = root socket listen { master { path = /var/run/dovecot/auth-master mode = 0666 } } } На практике получается: Jun 12 17:25:10 myhost postfix/pickup[32200]: E982713B9B: uid=0 from= Jun 12 17:25:10 myhost postfix/cleanup[352]: E982713B9B: message-id=<20070612132510.E982713B9B@myhost.mydomain.com> Jun 12 17:25:10 myhost postfix/qmgr[32202]: E982713B9B: from=, size=306, nrcpt=1 (queue active) Jun 12 17:25:10 myhost postfix/pipe[355]: E982713B9B: to=, orig_to=, relay=dovecot, delay=0.04, delays=0.03/0/0/0.01, dsn=5.1.1, status=bounced (user unknown) Т.е. в такой конфигурации deliver ничего не знает про системных пользователей. Если userdb passwd раскомментировать, получим: Jun 12 17:27:15 myhost postfix/pickup[32200]: 5F79513B9B: uid=0 from= Jun 12 17:27:15 myhost postfix/cleanup[406]: 5F79513B9B: message-id=<20070612132715.5F79513B9B@myhost.mydomain.com> Jun 12 17:27:15 myhost postfix/qmgr[32202]: 5F79513B9B: from=, size=306, nrcpt=1 (queue active) Jun 12 17:27:15 myhost deliver(john): setgid(502) failed: Operation not permitted Jun 12 17:27:15 myhost postfix/pipe[409]: 5F79513B9B: to=, orig_to=, relay=dovecot, delay=0.05, delays=0.03/0/0/0.03, dsn=4.3.0, status=deferred (temporary failure) Т.е. в такой конфигурации deliver уже знает про системных пользователей, но зачем-то хочет сменить gid, а это ему не удается, т.к. он запущен от mail:mail. Если запустить deliver от root, то при доставке почты системному пользователю он сменит uid/gid, но доставить не сможет, т.к. доступ к /data/mail имеет только mail:mail. Если б уговорить deliver не менять uid/gid, проблему удалось бы решить. Точно нет способа это сделать? Или есть другие варианты, которых я не вижу? -- С уважением, Прокопьев Евгений