Вопрос: Dovecot: права доступа к сокетам auth


Из моей установки postfix я запускаю доставку как никто: никто, и он не может подключиться к автозагрузчику dovecot. Это моя конфигурация dovecot:


# 2.0.13: /etc/dovecot/dovecot.conf
# OS: Linux 2.6.32-lts x86_64  
auth_mechanisms = plain login
auth_username_format = %Lu
disable_plaintext_auth = no
first_valid_gid = 65534
mail_location = maildir:/var/spool/vmail/%d/%u/
mail_privileged_group = postfix

passdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
protocols = imap pop3

service auth {
  user = nobody

  unix_listener login/auth-master {
    mode = 0666
  }
  unix_listener login/auth {
    group = postfix
    user = postfix
    mode = 0660
  }
}
ssl = no
userdb {
  args = /etc/dovecot/dovecot-sql.conf
  driver = sql
}
verbose_proctitle = yes
protocol imap {
  imap_client_workarounds = delay-newmail tb-extra-mailbox-sep
}
protocol pop3 {
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
  pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
  postmaster_address = postmaster@mydomain.com
  sendmail_path = /usr/sbin/sendmail
}

То, что у меня есть в журналах:


Aug  5 10:10:21 localhost dovecot: lda: Error: userdb lookup: connect(/var/run/dovecot/auth-userdb) failed: Permission denied (euid=99(nobody) egid=99(nobody) missing +r perm: /var/run/dovecot/auth-userdb, euid is not dir owner)
Aug  5 10:10:21 localhost dovecot: lda: Fatal: Internal error occurred. Refer to server log for more information.

Я попытался сделать


unix_listener auth-worker {
  user = nobody
}

в service auth , но dovecot не запускается с этим сообщением: doveconf: Fatal: Error in configuration file /etc/dovecot/dovecot.conf: duplicate listener: /var/run/dovecot/auth-worker

Как исправить эту проблему?

Благодарю.


5
2017-08-05 08:12


Источник


ls -l /var/run/dovecot/auth-userdb? - quanta
srw ------- 1 корень root 0 авг. 5 10:06 / var / run / dovecot / auth-userdb делает unix_listener auth-userdb {user = nobody} помогает, но тогда у auth-worker есть владелец корня, и доставка снова завершается :( - Daniel


Ответы:


Проблема с полномочиями auth-userdb и владением разрешается следующим образом:


service auth {
  unix_listener auth-userdb {
    mode = 0660 # socket access mode
    user = nobody # set uid to nobody
    group = nobody # set gid to nobody
  }
}

Проблема с разрешениями и владением автоответчиком была намного сложнее, и я выяснил, как ее решить только после чтения источников dovecot. Возможно, есть некоторые страницы, описывающие эту проблему, но я их не нашел. Поскольку я обнаружил, что auth-worker является сервисом, и его разрешение на сокет может быть установлено следующим образом:


service auth-worker {
  unix_listener auth-worker {
    user = nobody # same as above, mode and group are supported too
  }
}

2
2017-08-05 09:21





Согласно сообщению об ошибке, у вас неправильный владелец /var/run/dovecot/ каталог. Исправьте это и будьте счастливы.


0
2017-08-05 08:17



забыть каталог, он не имеет ничего общего с проблемой. изменение разрешений сокета с помощью chmod / chown решает проблему. - Daniel