Điểm:0

Can PAM be used with Postfix and Dovecot SASL?

lá cờ ae

I have set up Postfix to use Dovecot SASL with PAM and Unix users, and Dovecot LDA (LMTP) for local mailbox storage. After some testing, turns out incoming mail gets declined with the reason:

Error: passdb lookup failed for [user]: Configured passdbs don't support credentials lookups

That's both troublesome and troubling - I opted for PAM-based authentication because all sources I found suggested it's the simplest and most reliable way. It's hard for me to troubleshoot what's going wrong at this moment - I'm not sure if it's truly an issue with PAM or if something's wrong with my configuration.

Logs

The doveadm lookup test:

$ doveadm auth lookup [user]
Error: passdb lookup failed for [user]: Configured passdbs don't support credentials lookups

Dovecot debug log after the lookup test:

$ cat /var/log/dovecot/dovecot-debug.log | tail -5
[date][time] auth: Debug: master in: PASS    1       [user]  service=doveadm debug
[date][time] auth: Debug: pam([user]): Performing passdb lookup
[date][time] auth: Debug: pam([user]): passdb doesn't support credential lookups
[date][time] auth: Debug: pam([user]): Finished passdb lookup
[date][time] auth: Debug: passdb out: FAIL   1       reason=Configured passdbs don't support credentials lookups

Relevant configuration

The /etc/dovecot/conf.d/10-auth.conf file:

auth_username_format = %Ln
auth_mechanisms = plain login
!include auth-system.conf.ext

The /etc/dovecot/conf.d/auth-system.conf.ext file:

passdb {
    driver = pam 
    args = session=yes failure_show_msg=yes dovecot
}
userdb {
    driver = static
    args = uid=vmail gid=vmail home=/var/vmail/%n
}

The /etc/pam.d/dovecot file is the default that came with the Rocky Linux (that equals RHEL and is the same as Fedora) Dovecot package:

#%PAM-1.0
auth       required     pam_nologin.so
auth       include      password-auth
account    include      password-auth
session    include      password-auth

However, I also tried the configuration as suggested by the official Dovecot PAM documentation and it didn't yield any different results. I am confident in the rest of my configuration, as I spent considerable time studying the options, but I still barely understand the PAM config...

All logs point at the issue being with the Dovecot SASL itself, not with the Postfix or Dovecot configuration. Any suggestions would be much appreciated.

anx avatar
lá cờ fr
anx
Trình điều khiển PAM passdb chỉ cung cấp cho bạn kết quả xác thực nhị phân *thành công/thất bại* và userdb của bạn không giúp xác định người dùng nào tồn tại. Bạn *muốn* điều gì xảy ra khi có thư gửi đến cho `[email protected]`?
Marty Cagas avatar
lá cờ ae
Tốt nhất là trả lời _"Thư không gửi được trả lại cho người gửi"_, nhưng nếu tôi hiểu chính xác thì đó là nhiệm vụ của Postfix, không phải Dovecot. Dovecot chỉ cần xác thực xem người dùng này có tồn tại trên máy thông qua SASL hay không và gửi lại câu trả lời cho Postfix. Xác thực không xảy ra ở giai đoạn này - nhưng nó cần hoạt động khi người dùng cố gắng đọc hộp thư của họ qua IMAP/POP3.
anx avatar
lá cờ fr
anx
(Nói chính xác, thậm chí còn tốt hơn: postfix khi được hướng dẫn `reject_unverified_recipient` sẽ biết thông qua LMTP rằng Dovecot không thể tìm thấy người dùng đó và thông báo như vậy trên kết nối đến. Sau đó, trách nhiệm tạo thông báo trả lại thuộc về chuyển tiếp của người gửi, nghĩa là thiết lập của bạn không cần tạo tán xạ ngược.)
Điểm:0
lá cờ ae

Tôi không biết đây có phải là giải pháp phù hợp cho vấn đề không (bây giờ quay lại và đọc bình luận của anx trên bài đăng gốc của tôi khiến tôi tự hỏi liệu có phải như vậy không), nhưng tôi đã quản lý để cả tra cứu và xác thực hoạt động bằng cách thêm một giây mật khẩu nhập vào cấu hình của Dovecot.

Trong cấu hình Dovecot, tôi đã đặt trước Cơ sở dữ liệu mật khẩu PAM mục nhập với một mật khẩu cơ sở dữ liệu mật khẩu lối vào:

# ví dụ. /etc/dovecot/conf.d/auth-system.conf.ext
passdb { # Đây không phải lỗi đánh máy
         # Passwd có thể được sử dụng dưới dạng passdb và userdb
    trình điều khiển = passwd
}
mật khẩu {
    lái xe = pam
    args = bồ câu
}

Điều này làm cho người dùng tra cứu với tra cứu xác thực doveadm [người dùng] thành công.Tuy nhiên, các mật khẩu cơ sở dữ liệu không thể xác thực người dùng, vì mật khẩu không còn được lưu trữ trong /etc/passwd tập tin trên hệ thống Unix. Khi điều đó xảy ra, việc tra cứu sẽ tiếp tục với cơ sở dữ liệu mật khẩu PAM, cơ sở dữ liệu này sẽ xác thực người dùng một cách chính xác. Điều này có thể được kiểm tra với kiểm tra xác thực doveadm [người dùng] chỉ huy.


Tôi đã thêm câu trả lời này làm câu trả lời được chấp nhận vì giải pháp/cách giải quyết hiện đang hiệu quả với tôi. Nếu bất kỳ ai có bất kỳ đề xuất nào hoặc biết cách giải quyết vấn đề này theo cách tốt hơn, tôi rất sẵn lòng chấp nhận đề xuất đó. Chỉ với cơ sở dữ liệu PAM là cấu hình mặc định trên đá Linux (thực tế là RHEL), tôi ngạc nhiên là nó không hoạt động ngay từ đầu.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.