Вопрос или проблема
Я перешел по ссылке с другого сайта, где был размещен идентичный вопрос, решенный на этом сайте, но ссылка привела к ошибке 404. Я нашел другие ссылки на сбой pam и попытался изменить dovecot.conf, как упоминалось в другом решении. На самом деле, ошибка, указанная выше, больше не появляется, но я все еще не могу пройти аутентификацию.
passdb {
args = %s
driver = shadow
}
но это не сработало.
/var/log/mail.log
davomail postfix/smtpd[19906]: NOQUEUE: reject: RCPT from mail-yw0-f173.google.com[209.85.161.173]: 454 4.7.1 : Relay access denied; from= to= proto=ESMTP helo=
dovecot.conf
disable_plaintext_auth = no
mail_privileged_group = mail
mail_location = mbox:~/mail:INBOX=/var/mail/%u
userdb {
driver = passwd
}
passdb {
args = %s
driver = passwd
}
protocols = " imap"
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
}
ssl=required
postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
home_mailbox = Maildir/
inet_interfaces = all
local_recipient_maps = proxy:unix:passwd.byname $alias_maps
mailbox_size_limit = 0
mydestination = mail.domain.com, domain.com, localhost localhost.localdomain
mydomain = davomail.com
myhostname = mail.davomail.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
recipient_delimiter = +
relayhost =
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_cert_file = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file = /etc/ssl/private/mail.key
smtpd_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
Я перепутал все свои файлы pam.d, пытаясь провести отладку. Сначала он спрашивал, не существует ли файл, поэтому я его создал. Наконец, все заработало, когда я удалил файл pam.d/imap. Почему я получил ошибку с самого начала – это была неправильная конфигурация в dovecot.conf.
passdb {
args = %s
driver = passwd
}
должно быть
passdb {
args = %s
driver = pam
}
.
Ответ или решение
Чтобы понять проблему, связанную с ошибкой "pam_authenticate() failed: Authentication failure (/etc/pam.d/imap missing?)", рассмотрим основные принцип работы технической части, после которого разберем пример и предложим возможные решения.
Теория
Ошибка "pam_authenticate() failed" возникает при неуспешной попытке аутентификации пользователя через Pluggable Authentication Modules (PAM). PAM — это узко специализированный модуль, который обеспечивает гибкую систему аутентификации для операционных систем Unix. Каждый сервис, который использует аутентификацию, может иметь собственный файл конфигурации в директории /etc/pam.d/
.
В данном случае, dovecot
использует PAM для аутентификации пользователей, отсюда и потребность в корректной настройке.
Пример
В приведенном примере наблюдаются следующие ключевые моменты:
-
Проблема с конфигурацией dovecot.conf:
-
Первоначально конфигурация
passdb
содержала:passdb { args = %s driver = shadow }
что, вероятно, не соответствовало настройкам системы.
-
Автор заменил
driver = shadow
наdriver = passwd
, а затем наdriver = pam
, что решило проблему аутентификации.
-
-
Ошибки в конфигурации PAM:
- Ошибка "(/etc/pam.d/imap missing?)" указывает на отсутствие или неправильное содержимое файла
/etc/pam.d/imap
.
- Ошибка "(/etc/pam.d/imap missing?)" указывает на отсутствие или неправильное содержимое файла
-
Конфигурация Postfix:
- Ошибка "Relay access denied" может также указывать на неправильно настроенную подсистему email (например, SMTP-сервер Postfix), однако она косвенно связана с текущим вопросом о PAM.
Применение
Рекомендации по решению проблемы:
-
Настройка PAM:
- Убедитесь, что файл
/etc/pam.d/imap
существует и настроен правильно. За основу можно взять другие файлы в папке/etc/pam.d/
, которые служат для аналогичных сервисов (например,/etc/pam.d/ssh
). - Убедитесь, что файл имеет права доступа, достаточные для чтения сервисом Dovecot.
- Убедитесь, что файл
-
Конфигурация Dovecot:
- Правильно укажите драйвер базы данных паролей в Dovecot:
passdb { args = %s driver = pam }
- Перепроверьте другие настройки в конфиге Dovecot, такие как
disable_plaintext_auth
иssl
, чтобы они соответствовали вашим требованиям.
- Правильно укажите драйвер базы данных паролей в Dovecot:
-
Проверка журналов:
- Мониторьте файлы журналов
/var/log/mail.log
и/var/log/auth.log
для выявления дополнительных подсказок о возникших ошибках.
- Мониторьте файлы журналов
-
Тестирование:
- После внесения изменений перезапустите службы Dovecot и Postfix, чтобы изменения вступили в силу. Используйте команду
dovecot -n
для проверки конфигурации Dovecot на ошибки еще до запуска.
- После внесения изменений перезапустите службы Dovecot и Postfix, чтобы изменения вступили в силу. Используйте команду
Следуя этим рекомендациям, можно устранить проблемы с аутентификацией и добиться стабильной работы почтового сервера.