我有个人使用的Postfix / Dovecot / Roundcube设置,以及提供给其他用户.我试图将整个设置转移到一个新的盒子,但有一些问题.

邮件接收工作正常,(仅在内部测试,域尚未传输.)以及外部IMAP& SMTP使用TLS / SSL工作很棒(例如Thunderbird)

问题在于我的圆形立方体设置,它可以使用IMAP到127.0.0.1,并且显示用户的电子邮件,但无法发送电子邮件,只是声称:“SMTP错误(220):身份验证失败.”

奇怪的是,使用我在当前服务器上使用的相同Postfix / Dovecot配置,Roundcube无法再在我的新服务器上访问它.这是相关的roundcube配置:

$config['smtp_server'] = 'tls://localhost';

// Log SMTP conversation to <log_dir>/smtp or to syslog
$config['smtp_debug'] = true;

// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 587;

// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '%u';

// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '%p';

Roundcube的日志/错误日志简单地说:

[02-Jan-2015 16:55:49 America/New_York] STARTTLS Failed (): 
[02-Jan-2015 16:55:49 -0500]: SMTP Error: SMTP error: Authentication failure: STARTTLS Failed (Code: ) in /var/wwwmail/program/lib/Roundcube/rcube.PHP on line 1505 (POST /?_task=mail&_unlock=loading1420235752730&_lang=undefined&_framed=1?_task=mail&_action=send)

而Roundcube的日志/ smtp日志显示:

[02-Jan-2015 17:50:01 -0500]: Recv: 220 example.net ESMTP Postfix
[02-Jan-2015 17:50:01 -0500]: Send: EHLO example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-example.net
[02-Jan-2015 17:50:01 -0500]: Recv: 250-PIPELINING
[02-Jan-2015 17:50:01 -0500]: Recv: 250-SIZE 104857600
[02-Jan-2015 17:50:01 -0500]: Recv: 250-VRFY
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ETRN
[02-Jan-2015 17:50:01 -0500]: Recv: 250-STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 250-ENHANCEDSTATUSCODES
[02-Jan-2015 17:50:01 -0500]: Recv: 250-8BITMIME
[02-Jan-2015 17:50:01 -0500]: Recv: 250 DSN
[02-Jan-2015 17:50:01 -0500]: Send: STARTTLS
[02-Jan-2015 17:50:01 -0500]: Recv: 220 2.0.0 Ready to start TLS
[02-Jan-2015 17:50:01 -0500]: Send: RSET
[02-Jan-2015 17:50:01 -0500]: Recv: M I A…"qhçR¸
[02-Jan-2015 17:50:01 -0500]: Send: QUIT

以下是/etc/postfix/main.cf中我的postfix配置的相关片段

# TLS parameters for SMTP service
smtpd_tls_security_level    = may
smtpd_tls_cert_file         = /etc/ssl/private/example.net/example.net.crt
smtpd_tls_key_file          = /etc/ssl/private/example.net/example.net.key
smtpd_tls_auth_only         = yes

以下是/etc/postfix/master.cf中我的postfix配置的相关片段

smtp      inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
submission inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o cleanup_service_name=cleanup_submit
smtps     inet  n       -       -       -       -       smtpd
  -o content_filter=spamassassin
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

后缀日志/var/log/mail.log报告以下错误:

Jan  2 17:50:01 example postfix/submission/smtpd[19959]: connect from localhost.localdomain[127.0.0.1]
Jan  2 17:50:01 example postfix/submission/smtpd[19959]: SSL_accept error from localhost.localdomain[127.0.0.1]: 0
Jan  2 17:50:01 example postfix/submission/smtpd[19959]: warning: TLS library problem: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unkNown ca:s3_pkt.c:1292:SSL alert number 48:
Jan  2 17:50:01 example postfix/submission/smtpd[19959]: lost connection after STARTTLS from localhost.localdomain[127.0.0.1]
Jan  2 17:50:01 example postfix/submission/smtpd[19959]: disconnect from localhost.localdomain[127.0.0.1]

我已经阅读了一些其他类似错误代码的问题,但它们似乎都使用了自签名证书,或者我已经尝试过的adding a link to the certificate’s hash from /etc/ssl/certs/,尽管我可能错过了解,并且链接了错误的证书.

Roundcube更新到1.0.4,这应该解决由于openssl导致PHP版本不兼容的问题.我完全没有想法,任何人都有任何想法?

上面的错误消息看起来像客户端(圆形立方体调用的PHP脚本) fails to verify peer certificate because unknown CA.发生此错误的原因有很多.

关于openssl,Roundcube版本1.0-RC和更高版本附带SSL连接选项.参数smtp_conn_options和imap_conn_options分别在版本1.0-RC和1.0.3中添加.默认情况下,两个参数的值均为null.下面的代码段取自roundcube文件config / defaults.inc.PHP.您可以参考PHP manual以获得此参数的完整描述.

// SMTP socket context options
// See http://PHP.net/manual/en/context.ssl.PHP
// The example below enables server certificate validation,and
// requires 'smtp_timeout' to be non zero.
// $config['smtp_conn_options'] = array(
//   'ssl'         => array(
//     'verify_peer'  => true,//     'verify_depth' => 3,//     'cafile'       => '/etc/openssl/certs/ca.crt',//   ),// );
$config['smtp_conn_options'] = null;

在许多使用自签名证书的系统中,默认值适用于PHP 5.5及更早版本.默认情况下,PHP 5.6 will verify peer certificate against installed CA and verify the peer name.

现在,看起来像Debian jessie也是shipped with default PHP version 5.6.显然PHP无法验证postfix证书.可能的原因,PHP在verify_peer_name中失败(因为您在hostname中指定了localhost)或者在verify_peer中失败了(因为CA未知)

类似的情况也发生在to Arch Linux user.解决方案是:

>在openssl cert目录中安装CA证书>在roundcube smtp_server选项中,将localhost更改为Postfix FQDN(来自OP的解决方案)>在smtp_conn_options中禁用verify_peer和/或verify_peer_name

php – Roundcube&Postfix SMTP:SSL例程:SSL3_READ_BYTES:tlsv1 alert unknown ca:s3_pkt.c的更多相关文章

  1. ios – 应该加密APNS令牌吗?

    所以,我想知道,因为用户将APNS令牌发送给APNS提供商以便接收推送通知,是否应该加密令牌?另外,我认为根据APNS令牌识别设备是不可能的?因此,我想确保,如果有人从我的一个客户端嗅探推送通知注册...>他仍然必须获得我的推送证书才能以任何方式打扰我的客户>他知道有人对这些信息感兴趣,但无法确定我的客户是谁我可以放心吗?

  2. iOS Enterprise Deployement:单击itms-services链接会导致“无法连接到[域]”错误

    解决方法我有这个问题,这里没有任何记录的解决方案,或者在其他答案中,没有为我工作.使用正确的SSL证书,可以在目标设备上的safari中加载plist,没有任何问题.但是,尝试使用“itms-services://…”链接进行安装将始终失败,并显示“无法连接到[域]”错误.问题是Web服务器上未配置中间SSL证书.Web浏览器没有问题,SSL有效,但将设备连接到Mac,并通过XCode中的设备面板查看日志显示以下错误:在Apache上安装中间SSL证书解决了这个问题.

  3. ios – 我可以使用自签名SSL证书服务器在空中部署企业应用吗?

    iOS7.1之后,如果我们要通过空中部署我们的Enterprise应用程序,则manifest.plist文件的URL必须是HTTPS.例如:在我的服务器中,我使用自签名SSL证书.当我点击iPhone上的URL时,它表示无法连接到并记录典型的所以,我想知道我是否可以使用自签名SSL证书?如果可以,我如何解决我遇到的问题的问题?

  4. Xcode 4 / iOS – 使用SMTP从我的应用程序发送电子邮件

    我一直在寻找一个框架,只需让我从我的应用程序内发送一封电子邮件.我已经尝试过MailCore,Pantomime和SKPSMTP,没有运气.我不能让他们在Xcode中编译,所以我推测他们已经过时了.有什么办法可以做到吗?谢谢.解决方法您可以轻松地从iOS设备发送电子邮件.不需要实现SMTP和所有.在iOS中使用内置电子邮件功能的最佳方法是让您访问通讯录!为了完整起见,如果用户按取消或发送,我必须写这个选择器来关闭电子邮件窗口–快乐编码…

  5. ios – 为什么一些iphone应用程序不会完成与Charles Proxy的ssl握手?

    我正在使用CharlesProxy查看从我的iPhone出来的所有流量.我的iPhone上安装了ssl证书/配置文件,我可以看到很多ssl加密的流量.然而,一些应用程序似乎没有完成ssl握手.错误是:“SSLHandshake:远程主机在握手期间关闭连接”,然后CharlesProxy建议将应用程序配置为信任查尔斯根证书.我以为当我将配置文件安装到我的iphone上时呢?

  6. ios – 获取SSL证书详细信息

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  7. ios – 如何让Charles在SSL连接上使用Xcode 7?

    我遇到了新安装的Xcode7的问题,即使在通过Charles在iOS模拟器上安装SSL证书(帮助>SSL代理>在iOS模拟器中安装CharlesRoot证书),并明确允许服务器的域我在查尔斯查询,任何试图收听SSL流量的尝试都会导致连接失败.Charles报告以下错误:SSLHandshake:RemotehostclosedconnectionduringhandshakeYoumayneedt

  8. 从iOS7迁移后,为什么iOS8 SSL请求会间歇性地失败?

    我的下一步是什么,找出这些请求失败的原因?

  9. iOS 10.3:模拟器HTTPS localhost:SSL错误

    这适用于iOS10.2及更低版本,但升级到10.3后,当模拟器尝试通过HTTPS连接到运行在localhost上的开发服务器时,Xcode控制台会输出以下错误:打印出URLSessionDataTask返回的错误显示:参考:Apple:Developer:GuidesandSampleCode:TechnicalNoteTN2232:HTTPSServerTrustEvaluation要创建自签名

  10. 尝试使用swift mailer,gmail smtp,php发送邮件

    这里是我的代码:在运行时出现此错误…

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部