Tra cứu người dùng Dovecot không thành công khi sử dụng tên người dùng @ định dạng tên miền


14

Tôi đã cài đặt Dovecot v2.0.11 trên máy chủ FreeBSD và việc tra cứu người dùng cho các địa chỉ email đến không thành công, nhưng việc tìm kiếm người dùng hệ thống đã thành công.

Dovecot được thiết lập để sử dụng người dùng hệ thống, do đó dovecot.conf của tôi có

 userdb {
  driver = passwd
}

passdb {
  driver = passwd
}

Tôi đã bật auth gỡ lỗi.

Ví dụ: tôi có một người dùng được gọi là quản trị trang web và sử dụng người dùng doveadm cho "quản trị trang web" hoạt động như sau:

#doveadm user webmaster
userdb: webmaster
  system_groups_user: webmaster
  uid       : 1020
  gid       : 1020
  home      : /home/webmaster

Tuy nhiên, việc sử dụng doveadm để tra cứu webmaster@myregisteredname.com không thành công như sau:

# doveadm user webmaster@myregisteredname.com
userdb lookup: user webmaster@myregisteredname.com doesn't exist

Điều này dẫn đến việc thư đến cho webmaster@myregisteredname.com bị trả về với lỗi "người dùng không xác định".

Đây là lỗi đăng nhập / var / log / maillog:

Apr 16 20:13:35 www dovecot: auth: passwd(webmaster@myregisteredname.com): unknown user

Đây là lỗi đăng nhập /var/log/debug.log:

Apr 16 20:13:35 www dovecot: auth: Debug: master in: USER       1       webmaster@myregisteredname.com  service=doveadm
Apr 16 20:13:35 www dovecot: auth: Debug: passwd(webmaster@myregisteredname.com): lookup
Apr 16 20:13:35 www dovecot: auth: Debug: master out: NOTFOUND  1

Người dùng và thư mục nhà của họ đã được nhập từ một máy chủ khác và người dùng được thiết lập bằng công cụ vipw. Tôi chắc chắn rằng đôi khi tôi đã bỏ lỡ việc nhập mà không "liên kết" người dùng hệ thống với tra cứu dovecot.

Bất kỳ ý tưởng về những gì đó có thể là gì?

EDIT: Sử dụng lời khuyên của BillThor, tôi đã cập nhật dovecot.conf như sau:

#doveconf -n passdb userdb
passdb {
  args = username_format=%n
  driver = passwd
}
userdb {
  args = username_format=%n
  driver = passwd
}

Tuy nhiên, bây giờ, người dùng doveadm thất bại theo một cách khác:

#doveadm user webmaster@pantronx.com
doveadm(root): Error: userdb lookup(webmaster@myregisteredname.com): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster@myregisteredname.com

Và, nó không còn hoạt động cho người dùng mà không có tên miền:

#doveadm user webmaster
doveadm(root): Error: userdb lookup(webmaster): Disconnected unexpectedly
doveadm(root): Fatal: userdb lookup failed for webmaster

Khi tôi nhận được các thông báo trên, thông báo sau nằm trong / var / log / maillog:

Apr 17 17:30:02 www dovecot: auth: Fatal: passdb passwd: Unknown setting: username_format=%u
Apr 17 17:30:02 www dovecot: master: Error: service(auth): command startup failed, throttling

Câu trả lời:


15

Người dùng trong dovecot sử dụng passdb không bao gồm tên miền. Userid người dùng nên sử dụng là phần cục bộ, không phải địa chỉ email đầy đủ.

Các kiểm tra đang vượt qua và thất bại đang làm việc như mong đợi. Cài đặt auth_username_format=%ntrước khi định nghĩa db mật khẩu không hoạt động. Tên miền không được xác nhận mặc dù.


Cảm ơn bạn đã trả lời, nhưng điều đó cũng không hoạt động. Tôi đã chỉnh sửa câu hỏi của mình với kết quả được cập nhật.
cigarman

1
@Coleman: Tìm thấy giải pháp làm việc cho Dovecot 1.2. Nên làm việc cho Dovecot 2 là tốt. Xem chỉnh sửa để đáp ứng của tôi. Tìm thấy giải pháp trong tập tin cấu hình mặc định cho Ubuntu.
BillThor

13

Tôi đang sử dụng Ubuntu Server 12.04 và tôi đã thử các giải pháp trên. Tuy nhiên, tôi thấy rằng cách đơn giản và dễ nhất là trong 10-auth.conf để đặt

auth_username_format = %n

Tôi sử dụng PAM để xác thực là mặc định trong Ubuntu 12.04.


3

Tôi nghi ngờ rằng Dovecot 2.1 hoặc đã phá vỡ giải pháp này hoặc đã thay đổi hành vi dự kiến.

Tôi đã theo dõi lỗi ủy quyền tương tự với userdb:

userdb {
  driver = passwd
}

Khi một người dùng cục bộ (không ảo) nhận được email qua exim-> lmtp, nó bao gồm tên miền. Xác định auth_username_format =% Ln không sửa lỗi phân phối cục bộ, nhưng nó phá vỡ việc phân phối ảo. Bản sửa lỗi được cung cấp khi thêm args = username_format dường như bị bỏ qua:

userdb {
  driver = passwd
  args = username_format=%n
}

và nhật ký bao gồm một cảnh báo

Apr  4 11:24:57 moe dovecot: auth: Warning: userdb passwd: Move templates args to override_fields setting

Thật thú vị, sử dụng tệp passwd không hoạt động , nhưng auth thật điên rồ khi tệp passwd được sở hữu bởi root.

userdb {
  driver = passwd-file
  args = username_format=%n /etc/passwd
}

Apr  4 11:26:12 moe dovecot: auth: Error: passwd-file /etc/passwd: User root has invalid UID '0'
Apr  4 11:26:12 moe dovecot: auth-worker(6855): Error: passwd-file /etc/passwd: User root has invalid UID '0'

1

passwd-file: Unknown setting: username_format Đối với tôi lý do là không gian thêm:

passdb {
  driver = passwd-file
  args = scheme=SHA256-CRYPT **extra-space-here**username_format=%u /etc/dovecot/users
}

tức là tôi có hai khoảng trắng giữa CRYPT và uesrname.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.