免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: sprilich
打印 上一主题 下一主题

[Mail] postfix如何在mta层将邮件传给自己写的shell脚本 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2007-04-08 22:02 |只看该作者
按14 楼下面那个图,第二行的 smtp 显然是用于发信到 Internet,而且它不是daemon,只有smptd 才是daemon。

unix 代表它使用 socket,那本书 4.5 master.cf 章节 说只有pipe daemon 才能访问,我还未调试过。

第一行的 smtp 代表使用/etc/service 内定义的smtp 端口,凡是type 为inet,都要参考/etc/service。


原帖由 sprilich 于 2007-4-6 15:32 发表
还有一个问题
master.cf文件中
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#                ...

论坛徽章:
0
22 [报告]
发表于 2007-04-10 16:46 |只看该作者
原帖由 anthonyfeng 于 2007-4-8 22:02 发表
按14 楼下面那个图,第二行的 smtp 显然是用于发信到 Internet,而且它不是daemon,只有smptd 才是daemon。

unix 代表它使用 socket,那本书 4.5 master.cf 章节 说只有pipe daemon 才能访问,我还未调试过。
...


谢谢
明白了

论坛徽章:
0
23 [报告]
发表于 2007-04-10 16:48 |只看该作者
原帖由 sosogh 于 2007-4-7 21:53 发表
那本地发的邮件(WEBMAIL)就不能处理了,那这样做行不通了


可以哦
webmail把邮件送给postfix无非2个方式:
直接调用"sendmail"或者通过smtp方式连接postfix的25端口来发送邮件给postfix


直接调用"sendmail",用smtpd接收邮件,用sendmail传回,循环问题,我解决不了
通过smtp方式连接postfix的25端口来发送邮件,如何实现,请明示
还有,spa这些扫描垃圾邮件的程序是如何把邮件传回队列呢

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
24 [报告]
发表于 2007-04-10 17:05 |只看该作者
樓主不考慮用 Milter ?
這個方法我看應該是最好的,這個 Milter 可以跑在本機或別的機器
日後不用只要調整一兩行 postfix 的參數就可以了
搞得太複雜肯定造成日後的管理,交接問題

论坛徽章:
0
25 [报告]
发表于 2007-04-10 17:39 |只看该作者
---------直接调用"sendmail",用smtpd接收邮件,用sendmail传回,循环问题,我解决不了

从big-picture看到,通过"sendmail"方式把邮件送给postfix,邮件要经过:
sendmail--->maildrop--->pickup---->cleanup--->.....--->qmgr

使用smtpd方式把邮件送给postfix,邮件要经过:
smtpd--->cleanup---->...--->qmgr

所以无论你使用sendmail方式或者smtpd方式把邮件送给postfix,最终邮件都会通过qmgr调用pipe把邮件送给shell script



--------通过smtp方式连接postfix的25端口来发送邮件,如何实现,请明示
如果使用perl的话  可以使用perl的这个module
Net::SMTP - Simple Mail Transfer Protocol Client

论坛徽章:
0
26 [报告]
发表于 2007-04-10 17:51 |只看该作者
原帖由 abel 于 2007-4-10 17:05 发表
樓主不考慮用 Milter ?
這個方法我看應該是最好的,這個 Milter 可以跑在本機或別的機器
日後不用只要調整一兩行 postfix 的參數就可以了
搞得太複雜肯定造成日後的管理,交接問題


其实我的主要目的不是想做过滤,因为有现成的很多过滤机制可以使用
我的shell脚本是想实现一些其它功能(如让邮件内容变为短信,而邮件不变)

论坛徽章:
0
27 [报告]
发表于 2007-04-10 17:58 |只看该作者
所以无论你使用sendmail方式或者smtpd方式把邮件送给postfix,最终邮件都会通过qmgr调用pipe把邮件送给shell script


如果只改master中的smtpd,用sendmail送回,这样就可以实现只处理外部来的邮件,而且不会循环(这个已测试通过的)


如果使用perl的话  可以使用perl的这个module
Net::SMTP - Simple Mail Transfer Protocol Client

这方面比较弱,看样子得花点时间专门去看看相关知识了

论坛徽章:
0
28 [报告]
发表于 2007-04-13 14:36 |只看该作者
--------------如果使用perl的话  可以使用perl的这个module
--------------Net::SMTP - Simple Mail Transfer Protocol Client

#!/usr/bin/perl
use Net::SMTP;
 我使用Net::SMTP发邮件,发现最后它还是由smtpd来接受邮件,我想是不是只有一个postfix是不是无法实现我所需要的功能呢?
 还是说我钻牛角尖了,实在弄不明白了?
 或者说应该研究Spamassassin之类的过滤机制

Apr 13 16:18:35 localhost postfix/smtpd[27598]: connect from localhost.localdomain[127.0.0.1]
Apr 13 16:18:35 localhost postfix/smtpd[27598]: 3CA14F45FF: client=localhost.localdomain[127.0.0.1]
Apr 13 16:18:35 localhost postfix/cleanup[27606]: 3CA14F45FF: message-id=<20070413081835.3CA14F45FF@mail.test.com>
Apr 13 16:18:35 localhost postfix/qmgr[26976]: 3CA14F45FF: from=<test@test.com>, size=365, nrcpt=1 (queue active)
Apr 13 16:18:35 localhost postfix/smtpd[27598]: 6B20AF4601: client=localhost.localdomain[127.0.0.1]
Apr 13 16:18:35 localhost postfix/virtual[27609]: 3CA14F45FF: to=<test@test.com>, relay=virtual, delay=0.25, delays=0.19/0.01/0/0.06, dsn=2.0.0, status=sent (delivered to maildir)
Apr 13 16:18:35 localhost postfix/qmgr[26976]: 3CA14F45FF: removed

论坛徽章:
0
29 [报告]
发表于 2007-04-13 15:25 |只看该作者
Net::SMTP中要手动指定收方服务器的地址,这个有点麻烦

$smtp = Net::SMTP->new('收方服务器的地址');

不过还有个perl  module 可以查出一个域名的mx主机:Net:NS

论坛徽章:
0
30 [报告]
发表于 2007-04-13 16:38 |只看该作者
原帖由 sosogh 于 2007-4-13 15:25 发表
Net::SMTP中要手动指定收方服务器的地址,这个有点麻烦

$smtp = Net::SMTP->new('收方服务器的地址');

不过还有个perl  module 可以查出一个域名的mx主机:Net:NS



挺好用的


  仔细一想,原来是我一直在误导自己,因为我是要smtp层将邮件传给其它程序,自然会有多个smtp,只要再用perl发送到其它的smtp,根本不用传回自己,以及触发其它事件。只是我在试验时我没有把功能分开,所以就造成了循环。剩下的就是怎么写程序了。


谢谢各位老大的提示!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP