Ошибка аутентификации Dovecot при попытке входа с @домен

Вопрос или проблема

Когда я пытаюсь протестировать функциональность моего IMAP сервера с помощью telnet, я сталкиваюсь со следующей ошибкой.

Если во время теста я опущу @domain.ex, все работает нормально (как видно ниже);

a login user password
a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT 
SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL 
CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC 
ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE] Вошел

если я попробую использовать [email protected], я получаю следующую ошибку:

a login [email protected] password
a NO [AUTHENTICATIONFAILED] Аутентификация не удалась.

Кто-нибудь знает, где я ошибаюсь?

Вывод команды dovecot -n

# 2.2.10: /etc/dovecot/dovecot.conf
# ОС: Linux 2.6.32-openvz-042stab090.5-amd64 x86_64 CentOS Linux release 7.0.1406 (Core)  
auth_mechanisms = plain login
disable_plaintext_auth = no
mail_location = maildir:~/Maildir
mbox_write_locks = fcntl
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
}
passdb {
  driver = pam
}
service auth {
  unix_listener auth-userdb {
    group = postfix
    user = postfix
  }
}
ssl = required
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem
userdb { 
  driver = passwd
}

В качестве драйвера аутентификации вы выбрали драйвер passwd. Иными словами, пользователь будет искать в файле /etc/passwd. Вот как выглядит содержимое /etc/passwd.

Обычно /etc/passwd содержал только имя пользователя и не имел доменной части. Поэтому очевидно, почему это не срабатывает. Вот некоторые ресурсы относительно dovecot с аутентификацией passwd.

Ответ или решение

Проблема, с которой вы столкнулись, заключается в том, что при попытке аутентификации на вашем IMAP-сервере Dovecot с использованием полного адреса электронной почты (например, [email protected]) возникает ошибка "Authentication failed". Однако при использовании только имени пользователя (например, ‘user’) аутентификация проходит успешно.

Причина проблемы

Основная причина данного поведения кроется в конфигурации Dovecot и в том, как настроено определение пользователей. Ваша конфигурация Dovecot использует passwd в качестве auth драйвера:

passdb {
  driver = pam
}

это означает, что Dovecot ищет пользователей в файле /etc/passwd, который, как правило, содержит только имена пользователей без доменной части. Поэтому, когда вы вводите полный адрес электронной почты, Dovecot не может найти соответствующую запись в /etc/passwd, что приводит к ошибке аутентификации.

Решение

Чтобы исправить эту проблему и обеспечить возможность аутентификации с использованием полного адреса электронной почты, вы можете рассмотреть следующие варианты:

  1. Использование пользовательских баз данных:

    Вместо того чтобы полагаться только на /etc/passwd, вы можете настроить Dovecot для использования более сложного механизма аутентификации, такого как SQL-база данных (MySQL, PostgreSQL и т.д.), LDAP или даже собственного файла с пользователями. Это даст вам возможность хранить и управлять пользователями, где каждый пользователь будет хранить полный адрес электронной почты.

  2. Изменение конфигурации Dovecot:

    Если вы хотите оставить текущую конфигурацию, но при этом желаете аутентифицировать пользователей с доменной частью, вы можете изменить способ аутентификации:

    userdb {
     driver = static
     args = uid=500 gid=500 home=/home/%u
    }

    Здесь %u автоматически заменится на указанное имя пользователя, при этом вам нужно будет убедиться, что соответствующие пользователи существуют в системе.

  3. Настройка Virtual Users:

    Dovecot также поддерживает работу с виртуальными пользователями, что означает, что вы можете настроить своих пользователей в специальной таблице базы данных, что упростит управление множеством доменных адресов. Для этого потребуется создать или изменить существующую конфигурацию.

Проведение тестов

После выполнения вышеуказанных изменений не забудьте:

  • Перезагрузить Dovecot для применения новых настроек:

    systemctl restart dovecot
  • Запустить тест с использованием telnet:

    telnet your-imap-server 143
    a login [email protected] password

Если аутентификация проходит успешно, значит, изменения в конфигурации были успешно применены.

Заключение

Проблема с аутентификацией пользователей в Dovecot при использовании полного адреса электронной почты может быть успешно решена путем изменения конфигурации аутентификации или использования более сложной модели управления пользователями. Если у вас есть дополнительные вопросы или необходима помощь в настройке, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...