如果我saslauthd
通过svcadm
它运行它不起作用,但如果我从命令行运行它,它就起作用。
u@h:w$ svcadm enable saslauthd
u@h:w$ ps -ef|grep sasl
root 17192 14073 0 05:50:12 ? 0:00 /opt/ooce/sbin/saslauthd -a sasldb -c -m /var/run/saslauthd
root 17194 17102 0 05:50:31 pts/3 0:00 grep sasl
u@h:w$ /opt/ooce/sbin/testsaslauthd -p topsikrit -u imapuser
0: NO "authentication failed"
u@h:w$ svcadm disable saslauthd
u@h:w$ /opt/ooce/sbin/saslauthd -a sasldb -c -d -V -m /var/run/saslauthd
saslauthd[17211] :num_procs : 5
saslauthd[17211] :mech_option: NULL
saslauthd[17211] :run_path : /var/run/saslauthd
saslauthd[17211] :auth_mech : sasldb
...
[切换到另一个tty]
u@h:w$ /opt/ooce/sbin/testsaslauthd -p topsikrit -u imapuser
0: OK "Success."
这唯一的区别据我所知,两种运行模式之间的区别saslauthd
在于,一种是由框架启动svcadm
,另一种是从命令行启动。但是用户(root
-- 尽管$
提示中的 )是相同的,并且参数(除了-V
和-d
)也相同。那么为什么在第一种情况下不会saslauthd
进行身份验证,但在第二种情况下会进行身份验证呢?
上述命令是在稀疏区域中运行的。
如果我切换到,一切都会正常进行密码机制,但我更喜欢使用萨斯数据库。
答案1
如果这对其他人有帮助,SASL DB 是:
# ls -l /var/opt/ooce/sasl2/
total 172
-rw-r----- 1 cyrus cyrus 32768 May 9 03:30 sasldb2
-rw-r----- 1 cyrus cyrus 8192 May 9 22:30 sasldb2-lock
chmod go+rw
如果你有这两个文件,它就可以工作。我知道它们是由 拥有的创建的root
,但我单独发现这会阻止 Cyrus 服务器成功进行身份验证;尽管答案可能是权限,而不是所有权。