我使用Postfix设置邮件服务器,并将其configuration为使用Cyrus SASL来validation用户。 它工作完美,直到我发现我可以用比他们实际上更短的密码login。
例如密码应该是uhuh1234h22我可以login:
uhuh1234 uhuh1234h uhuh1234h2 uhuh1234h22
但不能缩短…
我用这个命令testing了一下:
testsaslauthd -u USERNAME -p PASSWORD -s smtp -f /var/spool/postfix/var/run/saslauthd/mux
我的问题是为什么会发生这种情况,我怎么能阻止呢?
/etc/pam.d/smtp中的configuration文件是:
auth required pam_mysql.so user=USR passwd=PASS host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1 account sufficient pam_mysql.so user=USR passwd=PASS host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
麻烦在于你使用crypt
。 从文档到pam_mysql :
crypt (0) Specifies the method to encrypt the user's password: 0 (or "plain") = No encryption. Passwords stored in plaintext. HIGHLY DISCOURAGED. 1 (or "Y") = Use crypt(3) function 2 (or "mysql") = Use MySQL PASSWORD() function. It is possible that the encryption function used by pam-mysql is different from that of the MySQL server, as pam-mysql uses the function defined in MySQL's C-client API instead of using PASSWORD() SQL function in the query. 3 (or "md5") = Use MySQL MD5() function
您的crypt
参数设置为1
,这意味着使用crypt
函数。 这就是crypt
正在做的事情 :
通过取密钥的前八个字符中的每一个的最低7位,获得一个56位密钥。
您应该使用其他存储scheme之一(最好是2或3)以允许更长的密码。
请注意,您可能还需要检查/etc/pam.d中的其他服务定义,以确保覆盖了所有内容(如果您的Cyrus IMAP服务器在同一主机上使用SASL进行身份validation,则至less需要/ etc / pam .d / imap会包含相似的logging)
当更改密码encryptionscheme时,也会有效地丢失所有存储的密码并需要重置。