Dovecot: Символ имени пользователя запрещен auth_username_chars: 0x0a

Я пытаюсь настроить сервер postfix + dovecot для использования GNU Mailman для создания сервера списков рассылки, однако в настоящее время я застрял на настройке аутентификации SASL с использованием dovecot. Кажется, он добавляет символ новой строки к имени пользователя в кодировке base64

Примечание - Я скрыл свое фактическое доменное имя и заменил его на mail.example.org , а мой общедоступный IP - на XXXX

Сеанс Telnet выглядит так

sh-5.0$ telnet mail.example.org 25
Trying X.X.X.X...
Connected to mail.example.org.
Escape character is '^]'.
220 mail.example.org ESMTP Postfix (Ubuntu)
EHLO mail.example.org
250-mail.example.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8
AUTH LOGIN
334 VXNlcm5hbWU6
Y29jb2EK
535 5.7.8 Error: authentication failed: VXNlcm5hbWU6

Имя пользователя cocoa , и я закодировал его с помощью echo cocoa | openssl base64 .Теперь, когда я проверяю свои журналы dovecot:

Jan 07 11:28:51 master: Info: Dovecot v2.2.33.2 (d6601f4ec) starting up without any protocols (core dumps disabled)
Jan 07 11:29:06 auth: Debug: Loading modules from directory: /usr/lib/dovecot/modules/auth
Jan 07 11:29:06 auth: Debug: Module loaded: /usr/lib/dovecot/modules/auth/lib20_auth_var_expand_crypt.so
Jan 07 11:29:06 auth: Debug: Wrote new auth token secret to /var/run/dovecot/auth-token-secret.dat
Jan 07 11:29:06 auth: Debug: auth client connected (pid=0)
Jan 07 11:29:52 auth: Debug: client in: AUTH    1   PLAIN   service=smtp    nologin lip=X.X.X.X rip=106.202.14.226  resp=<hidden>
Jan 07 11:29:52 auth: Info: pam(cocoa,106.202.14.226): Attempted login with password having illegal chars
Jan 07 11:29:54 auth: Debug: client passdb out: FAIL    1   user=cocoa
Jan 07 11:30:48 auth: Debug: client in: AUTH    2   LOGIN   service=smtp    nologin lip=X.X.X.X rip=106.202.14.226
Jan 07 11:30:48 auth: Debug: client passdb out: CONT    2   VXNlcm5hbWU6
Jan 07 11:30:51 auth: Debug: client in: CONT<hidden>
Jan 07 11:30:51 auth: Info: login(?,106.202.14.226): Username character disallowed by auth_username_chars: 0x0a (username: cocoa?)
Jan 07 11:30:53 auth: Debug: client passdb out: FAIL    2   user=cocoan original_user=cocoan
Jan 07 11:31:44 auth: Debug: client in: AUTH    3   LOGIN   service=smtp    nologin lip=X.X.X.X rip=106.202.14.226
Jan 07 11:31:44 auth: Debug: client passdb out: CONT    3   VXNlcm5hbWU6
Jan 07 11:31:57 auth: Debug: client in: CONT<hidden>
Jan 07 11:31:57 auth: Info: login(?,106.202.14.226): Username character disallowed by auth_username_chars: 0x0a (username: cocoa?)
Jan 07 11:31:59 auth: Debug: client passdb out: FAIL    3   user=cocoan original_user=cocoan

Кажется, в журналах указано, что имя пользователя cocoan , тогда как я закодировал cocoa . Я подозреваю, что n каким-то образом происходит от символа \ n ? Но я не уверен, как он добавляется.

Мой dovecot.conf выглядит так

root@mail:/etc/dovecot# cat dovecot.conf | grep -v ^#

!include_try /usr/share/dovecot/protocols.d/*.protocol
dict {
  #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}
!include conf.d/*.conf
!include_try local.conf

Единственные файлы, которые я редактировал, это 10-auth.conf

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

и 10-master. conf service auth {} block

service auth {

  unix_listener auth-userdb {
    #mode = 0666
    #user = 
    #group = 
  }

  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  # Auth process is run as this user.
  #user = $default_internal_user
}

Наконец, мой postfix.conf выглядит так

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.example.org
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, mail.example.org, localhost.example.org, , localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = 
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes

. Я был бы очень признателен за любую помощь. Я застрял на этом последние два дня

0
задан 7 January 2020 в 21:49
1 ответ

Итак, я отправил тот же вопрос на Reddit здесь, и пользователь Reddit slugonamission правильно указал, что echo добавляет символ новой строки по умолчанию, поэтому мне пришлось делать echo -n какао | openssl base64, а не эхо-какао | openssl base64

Я оставлю это на случай, если кто-то так же не заметит, как я

1
ответ дан 7 January 2020 в 20:17

Теги

Похожие вопросы