Apache NiFi 1.0.0测试版:邮件路由应用新型ListenSMTP
本文为用户使用Apache NiFi最新版本来监听SMTP邮件,并以编程方式做出反应以及捕捉数据提供了指导。
首先就可以注意到Apache NiFi 1.0.0应用了很棒的新界面,更加清晰也更加方便使用。
下面先添加一个ListenSMTP处理器,用作邮件网关/ SMTP服务器。正如用户所看到的,这里还有能够从邮件中提取附件和标题的处理器。
同时,还要确保设置了Listening Port,SMTP主机名和Max. # of Connections。
邮 件处理的整个流程其实相当简单,所以也比较容易理解。第一步,在TCP Port监听SMTP(本文中选用了2025,如果具有Root访问权限的话建议在25上运行)。然后把原始流文件传送到HDFS中。同时,需要提取附件 放在一个单独的HDFS目录里。最后退出邮件标题并把它们寄给一个HDFS文件。此外,本文还在底部做了一个小测试,读取文件然后发送邮件至 ListenSMTP进行测试。
如果用户想要在HDP 2.4沙盒上运行Apache NiFi 1.0.0,则需要安装Java 8并把它作为JDK替代。
- http://tecadmin.net/install-java-8-on-centos-rhel-and-fedora/
- alternatives –config java
- Pick Java 8
本文中添加了Java 8作为替代,同时在bin/nifi.sh之上指定了Java_HOME。所以接下来就可以运行必需的Java 8了。
从命令行中发送一个SMTP测试消息:
telnet localhost 2025Trying 127.0.0.1...Connected to localhost.
Escape character is '^]'.220 sandbox.hortonworks.com ESMTP Apache NiFi
ehlo sandbox250-sandbox.hortonworks.com250-8BITMIME250-SIZE 67108864250 Ok
MAIL
FROM: <tim@sparkdeveloper.com>250 Ok
RCPT TO: <tspann@hortonworks.com>250 Ok
DATA354 End data with
<CR><LF>.<CR><LF>
hello
.250 Ok
利用SWAKS See可以更好地测试SMTP:
- https://debian-administration.org/article/633/Testing_SMTP_servers_with_SWAKS
- From Mac: brew install swaks
- From Centos/RHEL: sudo yum -y install swaks
邮件发送测试:
swaks --to tspann@hortonworks.com --server localhost:2025Received: from hw13125.home (localhost [127.0.0.1])
by sandbox.hortonworks.com with SMTP (Apache NiFi) id IRPEF4WI
for tspann@hortonworks.com; Wed, 10 Aug 2016 17:19:12 -0400 (EDT)Date: Wed, 10 Aug 2016 17:19:12 -0400To:
tspann@hortonworks.comFrom: tspann@hw13125.homeSubject: test Wed,10 Aug 2016 17:19:12 -0400X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
MIME-Version: 1.0Content-Type: multipart/mixed; boundary="----=_MIME_BOUNDARY_000_98059"------=_MIME_BOUNDARY_000_98059
Content-Type: text/plain
This is a test mailing
------=_MIME_BOUNDARY_000_98059
Content-Type: application/octet-stream
Content-Disposition: attachment
Content-Transfer-Encoding:
BASE64
------=_MIME_BOUNDARY_000_98059--
配置用于接收邮件消息的服务器是很容易,只需要在其中添加一个主机名和端口。
一旦用户建立好流程,就要创建一个模板并在版本控制之外保存XML。
模板创建已经被转移到Operate控制下。
如果不幸搞混了自己在做的事情,可以借助右上角的搜索功能。
最后,请记住这只是一个测试版产品,还没有准备好生产。所以,还是耐心等待HDF 2.0支持生产使用吧。
- 学习SpringMVC——拦截器
- 学习SpringMVC——国际化+上传+下载
- 行业研究:大数据(一)
- 控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[下篇]
- 如何通过VPC在本机搭建局域网
- 你常用的10个MySQL命令
- WCF技术剖析之三十一: WCF事务编程[下篇]
- WCF技术剖析之三十一:WCF事务编程[上篇]
- 学习SpringMVC——你们要的REST风格的CRUD来了
- 并发中的同步--WCF并发体系的同步机制实现
- WCF 技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?[下篇]
- 学习SpringMVC——从HelloWorld开始
- 小程序年底重磅更新,小游戏上线,最强入口也来了!
- 学习SpringMVC——如何获取请求参数
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Redis系列:高可用哨兵方案部署
- linux或windows环境下pytorch的安装与检查验证(解决runtimeerror问题)
- Linux 查看历史命令并执行的方法
- 在 awk 中使用循环
- 移植busybox构建最小根文件系统的步骤详解
- Linux中的screen命令使用详解
- Mysql4种方式避免重复插入数据!
- 手撕RTSP协议系列(3)——sdp格式详解
- Linux tee命令使用详解
- 简单了解Linux性能监控命令free
- 在CentOS 8上安装htop的教程
- Ubuntu16.04.5LTS安装SVN的过程
- CentOS6.5与CentOS7 ssh修改默认端口号的方法
- CentOS8 配置本地yum源的详细教程
- linux查找大文件指定内容的实现方法