我有一个运行Postfix 2.5.1的Ubuntu 8.04LTS系统.在该系统上,SMTP AUTH运行正常.的内容
/etc/postfix/sasl/smtpd.conf是:
/etc/postfix/sasl/smtpd.conf是:
pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN
与SASL相关的属性是:
smtpd_sasl_type = cyrus smtpd_sasl_auth_enable = yes smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_local_domain = $myhostname
当我做sudo sasldblistusers2时,我得到:
authusername@mail.mydomain.com: userPassword
就像我说的那样,在8.04LTS系统上一切正常.
但是,我试图将其迁移到运行Postfix 2.9.3的Ubuntu 12.04LTS系统,我无法让它工作.我正在做同样的事情,但postfix每次都会给出身份验证失败.
它不是/ etc / sasldb2文件.我试过从旧系统带来文件,但这不起作用.我使用以下方法创建了一个新文件:
saslpasswd2 -c -u mail.mydomain.com authusername
虽然它可以在旧系统上运行,但这不起作用
如果我将它复制到旧系统,这就是我所知道的
这个文件没有错.
同样,我知道postfix正在查看smtpd.conf文件.
如果我向文件的mech_list行添加更多机制,
我看到在连接时广告的那些额外机制
到smtpd守护进程.当我删除它们时它们会消失
再次.所以/etc/postfix/sasl/smtpd.conf很清楚
习惯.
我正在测试两者使用实际的邮件客户端和
生成令牌后,手动与服务器通话:
perl -MMIME::Base64 -e 'print encode_base64("\000authusername\000thePassword");'
然后:
openssl s_client -quiet -starttls smtp -connect the.newsystem.com:587
由此产生的对话是:
250 DSN EHLO example.com 250-the.newsystem.com 250-PIPELINING 250-SIZE 20971520 250-ETRN 250-AUTH PLAIN 250-AUTH=PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN AUTH PLAIN theBase64EncodedToken 535 5.7.8 Error: authentication Failed: authentication failure
但是,如果我改为连接到the.oldsystem.com:587并做了
同样的事情,我得到:
235 2.7.0 Authentication successful
saslfinger在新机器上的输出是:
# sudoh saslfinger -s saslfinger - postfix Cyrus sasl configuration Sat Jul 21 00:24:24 EDT 2012 version: 1.0.4 mode: server-side SMTP AUTH -- basics -- Postfix: 2.9.3 System: Ubuntu 12.04 LTS \n \l -- smtpd is linked to -- libsasl2.so.2 => /usr/lib/i386-linux-gnu/libsasl2.so.2 (0xb76c5000) -- active SMTP AUTH and TLS parameters for smtpd -- broken_sasl_auth_clients = yes smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_sasl_path = smtpd smtpd_sasl_security_options = noanonymous smtpd_sasl_type = cyrus smtpd_tls_CAfile = /etc/ssl/certs/MyCA.pem smtpd_tls_auth_only = yes smtpd_tls_cert_file = /etc/postfix/ssl/server.crt smtpd_tls_key_file = /etc/postfix/ssl/server.key smtpd_tls_loglevel = 1 smtpd_tls_security_level = may smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtpd_tls_session_cache_timeout = 3600s -- listing of /usr/lib/sasl2 -- total 16 drwxr-xr-x 2 root root 4096 Jul 20 23:00 . drwxr-xr-x 67 root root 8192 Jul 20 21:25 .. -rw-r--r-- 1 root root 1 May 4 00:17 berkeley_db.txt -- listing of /etc/postfix/sasl -- total 20 drwxr-xr-x 2 root root 4096 Jul 20 21:29 . drwxr-xr-x 5 root root 4096 Jul 20 23:58 .. -rw-r--r-- 1 root root 64 Jul 20 21:29 smtpd.conf -- content of /etc/postfix/sasl/smtpd.conf -- pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN -- content of /etc/postfix/sasl/smtpd.conf -- pwcheck_method: auxprop auxprop_plugin: sasldb mech_list: PLAIN -- active services in /etc/postfix/master.cf -- # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) smtp inet n - - - - smtpd submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING [snipping the rest of the services] -- mechanisms on localhost -- -- end of saslfinger output --
我能错过什么/做错什么?据我所知,所有的配置都是一样的,但它不适用于新系统.
赠品在这里:
-- active services in /etc/postfix/master.cf -- # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) smtp inet n - - - - smtpd submission inet n - - - - smtpd
提交端口上的smtpd进程以chroot模式运行(因为在该列中有 – 表示默认值(即是),因此无法查看/ etc / sasldb2.
当我将/ etc / sasldb2复制到/ var / spool / postfix / etc时,认证开始正常工作.