GNU Mailutils:如何在密码中对'*'进行编码
解决Mailutils中含
*的密码认证失败问题 问题重现
使用mailutils的messages命令访问IMAP邮箱时,密码包含*字符,无论直接写入或使用百分比编码%2A,均出现认证错误。相关配置及命令如下:
直接使用*的配置:
mailbox { mailbox-pattern "imap://userjoe:secret*pwd@imap.mydomain.de/INBOX"; }
百分比编码后的配置:
mailbox { mailbox-pattern "imap://userjoe:secret%2Apwd@imap.mydomain.de/INBOX"; }
执行命令:
messages --config-file=/srv/www/htdocs/mailutils-test.cfg --config-verbose --debug-level=auth.trace9
修复方案
1. 拆分用户名/密码到独立配置字段(推荐)
避免在URL中嵌入带特殊字符的密码,改用mailutils配置的独立username和password字段,无需处理任何转义:
修改后的配置文件:
mailbox { mailbox-pattern "imap://imap.mydomain.de/INBOX"; username "userjoe"; password "secret*pwd"; }
这种方式直接绕过URL解析对特殊字符的处理逻辑,是最可靠的解决方法。
2. 尝试配置文件内转义特殊字符
如果坚持使用URL形式,可在配置文件的双引号内对*进行反斜杠转义:
mailbox { mailbox-pattern "imap://userjoe:secret\*pwd@imap.mydomain.de/INBOX"; }
注意:此方法依赖mailutils的配置解析逻辑,兼容性不如第一种方案。
3. 升级Mailutils版本
部分旧版本的mailutils对URL中的特殊字符解析存在bug,尝试升级到最新稳定版:
# Debian/Ubuntu系 sudo apt update && sudo apt install --only-upgrade mailutils # RHEL/CentOS系 sudo dnf update mailutils
内容的提问来源于stack exchange,提问作者Dingoloni
相关产品推荐
相关产品推荐

