- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在 Haraka 中构建一个需要 tls 认证的应用程序。我使用命令生成了 .pem 文件 tls_cert.pem 和 tls_key.pem
openssl req -x509 -nodes -days 2190 -newkey rsa:1024 -keyout config/tls_key.pem -out config/tls_cert.pem
像 Haraka 建议的那样,确保 Common Name 字段的内容与我的 config/me 文件的内容相同。在我的配置/插件中我有
# default list of plugins
# Log to syslog (disabled by default, see docs)
#log.syslog
# block mails from known bad hosts (see config/dnsbl.zones for the DNS zones queried)
#dnsbl
# Check mail headers are valid
data.rfc5322_header_checks
# block mail from some known bad HELOs - see config/helo.checks.ini for configuration
#helo.checks
# control which "MAIL FROM" addresses you accept. See docs.
#mail_from.access
# Only accept mail where the MAIL FROM domain is resolvable to an MX record
#mail_from.is_resolvable
# Disconnect client if they spew bad SMTP commands at us
#max_unrecognized_commands
# control which "RCPT TO" addresses you reject. See docs.
#rcpt_to.access
# Only accept mail for your personal list of hosts. Edit config/host_list
# NOTE: THIS IS REQUIRED for inbound email.
rcpt_to.in_host_list
# Queue mail via smtp - see config/smtp_forward.ini for where your mail goes
#queue/smtp_forward
##### Custom Plugins ####
javascript/fooBar
tls
javascript/fooBar 是一个自定义插件,我用 coffeescript 编写并编译成一个 js 文件,这意味着它映射到 plugins/javascript/Mx25OutBoundActions.js
这里是plugins/javascript/fooBar.js的内容
(function() {
var DataBase, Password, User, database;
DataBase = require('./dataBase');
database = new DataBase();
User = null;
Password = null;
exports.hook_lookup_rdns = function(next, conn) {
return next(OK, '');
};
exports.hook_connect = function(next, conn, params) {
conn.remote_host = '';
return next(CONT, "The MX25 SMTP API is now ready.");
};
exports.register = function() {
this.loginfo('Test');
return this.inherits('auth/auth_base');
};
exports.hook_capablities = function(next, conn) {
var methods;
this.loginfo('Hello');
conn.capabilities.push('STARTTLS');
conn.notes.tls_enabled = 1;
if (conn.using_tls) {
this.loginfo('Connection Secure');
methods = ['PLAIN', 'LOGIN'];
conn.capabilities.push("AUTH " + (methods.join(' ')));
conn.notes.allowed_auth_methods = methods;
return next();
} else {
this.loginfo('Connection not secure');
return next(DENY, '5.7.1 Secure connection required');
}
};
exports.get_plain_passwd = function(user, cb) {
this.loginfo('*********');
this.loginfo(user);
this.loginfo('*********');
return cb(user);
};
exports.check_plain_passwd = function(conn, user, passwd, cb) {
this.loginfo("Hello!");
database.query('SELECT * FROM domains', function(error, results) {
var Password, User, flag, i, _i, _ref;
if (error == null) {
flag = 0;
for (i = _i = 0, _ref = results.length; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) {
if (user === results[i].address && passwd === results[i].outbound_password) {
flag = 1;
break;
}
}
if (flag === 1) {
User = user;
Password = passwd;
return cb(true);
} else {
console.log('User not authenticated');
return next(DENY, '5.7.1 Invalid authentication credentials provided');
}
} else {
console.log("Error: ${error}.");
}
});
return cb(true);
};
});.call(this);
我在运行时遇到了问题。 Haraka 启动得很好,但是当我运行命令时
swaks -f test@test.com -t myemail@gmail.com -s localhost -p 587 -au testname -ap t3$tPassword
在另一个委员会中,我从 swaks 那里得到一个错误的说法
*** Host did not advertise authentication
Haraka 的输出看起来像
[NOTICE] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] connect ip=::1 port=64243 local_ip=:: local_port=587
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running lookup_rdns hooks
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running lookup_rdns hook in javascript/fooBar plugin
[INFO] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] hook=lookup_rdns plugin=javascript/fooBar function=hook_lookup_rdns params="" retval=OK msg=""
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running connect hooks
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running connect hook in javascript/fooBar plugin
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] hook=connect plugin=javascript/fooBar function=hook_connect params="" retval=CONT msg="The MX25 SMTP API is now ready."
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] S: 220 The MX25 SMTP API is now ready.
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] C: EHLO richardas-mac-mini.local state=1
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running ehlo hooks
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running capabilities hooks
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running capabilities hook in javascript/fooBar plugin
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] hook=capabilities plugin=javascript/fooBar function=hook_capabilities params="" retval=CONT msg=""
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running capabilities hook in tls plugin
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] hook=capabilities plugin=tls function=hook_capabilities params="" retval=CONT msg=""
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] S: 250-outbound.mx25.net Hello [::1], Haraka is at your service.
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] S: 250-PIPELINING
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] S: 250-8BITMIME
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] S: 250-SIZE 500000
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] S: 250 STARTTLS
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] C: QUIT state=1
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running quit hooks
[PROTOCOL] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] S: 221 outbound.mx25.net closing connection. Have a jolly good day.
[DEBUG] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] running disconnect hooks
[NOTICE] [3D27FD1C-B94A-4271-84EB-460B32598491] [core] disconnect ip=::1 rdns="" helo="richardas-mac-mini.local" relay=N early=N esmtp=Y tls=N pipe=N txns=0 rcpts=0/0/0 msgs=0/0/0 bytes=0 lr="" time=0.008
我在这里迷路了。我已经搜索了 Haraka 关于这个主题的所有文档以及源代码和我找到的几个示例项目。为什么 Haraka 不授权我的身份验证?
编辑
我有验证码。我最初没有包含它,因为我认为它与错误无关。即使包含它,Haraka 输出也完全相同,并且函数第一行中的 this.loginfo 调用不会出现。 Swaks 产生的错误和输出也完全一样。在我把它包括在内之后,仍然在阅读马特的之后。为了仔细检查这一点,我还尝试注释掉 exports.check_plain_passwd 中的所有代码,并在所有情况下都返回 cb(true) 。没有改变。我得到了相同的输出和相同的错误。
最佳答案
您首先要尝试的是在调用 swaks
时使用 -tls
。在服务器日志中,我看到它通告 STARTTLS(并且不通告 AUTH),但客户端立即退出而不是协商 TLS。如果确实存在问题,这是在向您隐瞒。
关于node.js - Haraka 未授权我的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888450/
在 JSF2 应用程序中遇到验证属性的问题时,有两种主要方法。 使用 Annotation 在 ManagedBean 上定义验证 @ManagedBean public class MyBean {
我想实现一个不常见的功能,我认为 jquery 验证插件将是最好的方法(如果您在没有插件的情况下建议和回答,我们也会欢迎)。我想在用户在输入字段中输入正确的单词后立即隐藏表单。我试过这个: $("
我有几个下拉菜单(类名为month_dropdown),并且下拉菜单的数量不是恒定的。我怎样才能为它们实现 NotEqual 验证。我正在使用 jQuery 验证插件。 这就是我写的 - jQuery
我设法制作了这个网址验证代码并且它起作用了。但我面临着一个问题。我认为 stackoverflow 是获得解决方案的最佳场所。 function url_followers(){ var url=do
我目前正在使用后端服务,该服务允许用户在客户端应用程序上使用 Google Games 库登录。 用户可以通过他们的 gplay ID 向我们发送信息,以便登录或恢复旧帐户。用户向我们发送以下内容,包
我正在尝试验证输入以查看它是否是有效的 IP 地址(可能是部分地址)。 可接受的输入:172、172.112、172.112.113、172.112.113.114 Not Acceptable 输入
我从 Mongoose 验证中得到这条消息: 'Validator failed for path phone with value ``' 这不应该发生,因为不需要电话。 这是我的模型架构: var
我一直在尝试使用Python-LDAP (版本 2.4.19)在 MacOS X 10.9.5 和 Python 2.7.9 下 我想在调用 .start_tls_s() 后验证与给定 LDAP 服务
我正在处理一个仅与 IE6 兼容的旧 javascript 项目(抱歉...),我想仅在 VS 2017 中禁用此项目的 ESLint/CSLint/Javascript 验证/CSS 验证。 我知道
我正在寻找一种方法来验证 Spring 命令 bean 中的 java.lang.Double 字段的最大值和最小值(一个值必须位于给定的值范围之间),例如, public final class W
我正在尝试在 springfuse(JavaEE 6 + Spring Framework (针对 Jetty、Tomcat、JBoss 等)) 和 maven 的帮助下构建我的 webapps 工作
我试图在我们的项目中使用 scalaz 验证,但遇到了以下情况: def rate(username: String, params: Map[String, String]): Validation
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
我有一个表单,人们可以单击并向表单添加字段,并且我需要让它在单击时验证这些字段中的值。 假设我单击它两次并获取 2 个独立的字段集,我需要旋转 % 以确保它在保存时等于 100。 我已放入此函数以使其
在我的页面中有一个选项可以创建新的日期字段输入框。用户可以根据需要创建尽可能多的“截止日期”和“起始日期”框。就像, 日期_to1 || date_from1 日期到2 ||日期_from2 date
我有一个像这样的 Yaml 文件 name: hhh_aaa_bbb arguments: - !argument name: inputsss des
有没有办法在动态字段上使用 jquery 验证表单。 我想将其设置为必填字段 我正在使用 Jsp 动态创建表单字段。 喜欢 等等...... 我想使用必需的表单字段验证此表单字段。 最佳答
嗨,任何人都可以通过提供 JavaScript 代码来帮助我验证用户名文本框不应包含数字,它只能包含一个字符。 最佳答案 使用正则表达式: (\d)+ 如果找到匹配项,则字符串中就有一个数字。 关于J
我有两个输入字段holidayDate和Description(id=tags) $(document).ready(function() {
我遇到了这个问题,这些验证从电子邮件验证部分开始就停止工作。 我只是不明白为什么即使经过几天的观察,只是想知道是否有人可以在这里指出我的错误? Javascript部分: function valid
我是一名优秀的程序员,十分优秀!