无法使SASL auxprop / sasldb与postfix / Ubuntu 12.04一起使用


9

我有一个运行Postfix 2.5.1的Ubuntu 8.04LTS系统。在该系统上,SMTP AUTH运行良好。的内容 /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系统上,但我无法使其正常工作。我所做的一切都一样,但是后缀每次都会导致身份验证失败。

这不是/etc/sasldb2文件。我试过从旧系统中移走文件,但不起作用。我使用以下命令创建了一个新文件:

saslpasswd2 -c -u mail.mydomain.com authusername

而不起作用,但它WILL老系统上工作,如果我把它复制到旧的系统,这是我怎么知道有没有错的文件。

同样,我知道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 --

我会缺少什么/做错了什么?据我所知,所有配置都是相同的,但在新系统上将无法使用。

Answers:


15

赠品在这里:

-- 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该工艺submission端口在chroot环境模式下运行(因为有一个-在该列,这意味着默认(这是yes)适用,所以看不到/etc/sasldb2

当我复制/etc/sasldb2/var/spool/postfix/etc身份验证开始工作正常。


3
这个评论结束了今晚的后发狂。还要记住,它使用此配置将要求身份验证用户为user @ $ myhostname,而不仅仅是“ user”。这与我用于身份验证中继的类似exim配置之间是不同的。
David Dombrowsky

5

chroot无疑是原因,但是就我而言,复制到该行/var/spool/postfix/etc不起作用。

所以我只是摆脱了chroot,这对我有用。

n为此,您需要编辑/etc/postfix/master.cf,找到以下行:

smtp      inet  n       -       -       -       -       smtpd

并进行如下修改:

smtp      inet  n       -       n       -       -       smtpd

4

将sasldb2文件同步到后缀的默认chroot监狱的另一种方法是向其添加硬链接:

ln /etc/sasldb2 /var/spool/postfix/etc/

请注意,符号链接将无法工作,因为无法从监狱内部访问符号链接,但可以使用硬链接。与仅复制文件相比,这具有优势,因为将来的新用户和密码更改将自动同步,甚至无需重新加载后缀。


您好,我设法获得了一个测试服务器Ubuntu 16 Relaying,所以我想我将在生产服务器Ubuntu 14上重新实现我的更改……整日尝试。原因是Chroot,但更改为非chroot会导致更糟的结果,因此保留chroot并执行上述操作解决了我的问题。
mrjamesmyers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.