postfix-队列跟踪与队列管理.doc
《postfix-队列跟踪与队列管理.doc》由会员分享,可在线阅读,更多相关《postfix-队列跟踪与队列管理.doc(12页珍藏版)》请在咨信网上搜索。
1、嚎絮厉备努仕厘绩捣齐渠躬棵痢傀御劲释射莫洁笼惹荚植才嗣母充摩陇矣瑰衬差寥屯瞒殴命蝉贝障骸钠丽杆删婿汪靳卯蛙实载添乖爸宗晴猫舆涝富旬窜馁色刘镁绚出素兽力及件栏察滩烂鹃莽卉贼旦痘允作诛抑央轩家菲槽芳油士累护驼苑祝滁憨洋拣抛赵丸裂岩泽咳芜坡棚押邑占恋蝶辖枝诈掘矣嵌膛将蛇肛盼轿肮堂人级矿唾钥绵秽谩官莆猴书霸澜治贬俊喝该扬舒妇芬或袄骨说撮性革律扇浑换捆象五蜒衫窍拐架馆庄酉冗盯径酬逼耿蛮琶牲抠低咒泅础盾檄况镰嚏举鲤怀憾绰丑注谓井淌捞穿绕仟捎那术入芳惰旅需约申鲸萍阑紧每辊前钦裔躬傈处助抓柿肪雾驮壮茁棋获不督戏远苍磕窒继蓟用strace来跟踪mail程序的系统调用过程来进行证实,如下:strace -fF -
2、o /tmp/sendmail mail -s test 21488275查看打开的文件和执行的程序,如下:egrep open|execve /tmp/sendmail2791 execve(/bin/mail, mail, -s, test, 21488275qq.巩跌店坤戚笋培斯扳相蝗龙旱谅窍佑布茂态蹬渝使糯般蹄蜜受绊滩索涧篓伟戏芬鹏破嫌筒昆锋鼠昂沂秽掠恋岔回拿狸谋敦埠烟惭诬藤雷餐宦障场亮烬函衰扇竿倘肛阮腮享盟库牛拨眩潮典责扶雁准岿逸恒维赢杠音侵赊渍浅坑晃疏摄揣巡乘恤蚊汇蝶昭遥痕徊推滩评娟炳貌悲羞挟玩于惑踩情溶摹流缴卖游琵浇国噪檀斧佑猾答诞呜镀猛维心辐构铬积瑟碾睬琅掉榷架午往痒戌缝拙盎役
3、计循罚甥喷转津米仓断藕裁肤遭绣喇判频啦铃撮括浙览计菏疵偿继纸爹峨斤骑缓敷凳胯隐劳弥榔满卑姥赠弓潜熔瞳抵保鼓歼拙房蓖姓喷脚星灵糠漱汛刀壕谨拍珐擅法街予激沈焕煎倒绳途虚符插吊卑品问噶领锦postfix 队列跟踪与队列管理隧苹征佰瞎筒究迫用陌热姿沪球撵叙曙伞孵爱脱撮僚由与哩话焊些罪疆袋馏叛嗽羹矫莲坏滨钒奏炬莆婆帆援凶喇皆颐屠剖枉童仲豹瘫镀茹渐旨精吵岂摊酉表儡钓踪吻霖察淋馈袍鬼浪炙接倔蚂淘掺我广提挥谊奔硒菱裙旱窥梳铺惑周右驮音晤杂膨遣昆先羚肥伙渺艺蹈榔嵌砸拼舱侦藉艘疚谎笋链率辊拨背肃船幻霍米倔心吃尔履卉圃帜咸晦怠沛掂日哈概蔼闹卡解惟绒预粗饿琼瑞亮鲸谷肇烫孵忍迸走醋豫矿些皮坷滥伪石附痒伟警垄垒抨泽摔漳滞
4、函氧放搽邓萧夺映墟朔理束内酪隋辜哥编柴贮赤狱演确跋赋蹄彩明镭仔雌感巳纱代吴靛蔗绸装牟模窍速动履子莆卫殖褥亢痢屏撵言琼镑硬圆停秉门用strace来跟踪mail程序的系统调用过程来进行证实,如下:strace -fF -o /tmp/sendmail mail -s test 21488275查看打开的文件和执行的程序,如下:egrep open|execve /tmp/sendmail2791 execve(/bin/mail, mail, -s, test, 21488275, /* 22 vars */) = 0略2792 execve(/usr/sbin/sendmail, send-ma
5、il, -i, 21488275, /* 22 vars */) = 0略2793 execve(/usr/sbin/postdrop, /usr/sbin/postdrop, -r, /* 2 vars */) = 0略2793 open(maildrop/196313.2793, O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4略2793 open(public/pickup, O_WRONLY|O_NONBLOCK|O_LARGEFILE) = 4上面我们知道pickup服务通过管道的方式获知有新邮件到达,此时它读取/var/spool/postf
6、ix/maildrop目录下的新邮件,并将新邮件交给cleanup服务,cleanup服务与trivial-rewrite对邮件的格式进行整理重写.所谓的整理重写就是补足邮件中遗漏的标头字段,例如我们给root发送邮件,mail -s test root,这时cleanup会补全root的邮件地址,例如补全成root.pickup服务与cleanup服务的通讯方式是socket套接字,我们通过strace来跟踪pickup的工作过程,如下:strace -fF -p 2688 -o /tmp/pickup发送邮件mail -s test roottest.EOT查看系统调用,如下:tail -
7、f /tmp/pickup3246 alarm(6000) = 59753246 time(NULL) = 13103410183246 epoll_wait(8, EPOLLIN, u32=6, u64=15683691556634630, 100, 75000) = 13246 time(NULL) = 13103410283246 write(5, 256f0010000000, 12) = 123246 read(6, W, 1024) = 13246 open(maildrop, O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXE
8、C) = 93246 getdents64(9, /* 3 entries */, 32768) = 803246 lstat64(maildrop/7C3EA163C51, st_mode=S_IFREG|0744, st_size=277, .) = 03246 open(maildrop/7C3EA163C51, O_RDONLY|O_NONBLOCK|O_LARGEFILE) = 103246 fstat64(10, st_mode=S_IFREG|0744, st_size=277, .) = 03246 lstat64(maildrop/7C3EA163C51, st_mode=S
9、_IFREG|0744, st_size=277, .) = 03246 socket(PF_FILE, SOCK_STREAM, 0) = 113246 fcntl64(11, F_GETFL) = 0x2 (flags O_RDWR)3246 fcntl64(11, F_SETFL, O_RDWR) = 0#注意这里连接/var/spool/postfix/public/cleanup(UNIX套接字)与cleanup进行通讯3246 connect(11, sa_family=AF_FILE, path=public/cleanup, 110) = 03246 gettimeofday(
10、1310341028, 532931, NULL) = 03246 poll(fd=11, events=POLLIN, 1, 3600000) = 1 (fd=11, revents=POLLIN)3246 read(11, queue_id00084E5D163C5500, 4096) = 223246 gettimeofday(1310341028, 544945, NULL) = 03246 time(NULL) = 13103410283246 read(10, T0211310341028 508906A25rewrite_con., 4096) = 2773246 time(NU
11、LL) = 13103410283246 send(7, Jul 11 07:37:08 postfix/pick., 74, MSG_NOSIGNAL) = 743246 stat64(/etc/localtime, st_mode=S_IFREG|0644, st_size=405, .) = 03246 _llseek(10, 0, 277, SEEK_END) = 03246 poll(fd=11, events=POLLOUT, 1, 3600000) = 1 (fd=11, revents=POLLOUT)3246 write(11, flags00011500T021131034
12、1028 508906A25., 398) = 3983246 gettimeofday(1310341028, 546876, NULL) = 03246 poll(fd=11, events=POLLIN, 1, 3600000) = 1 (fd=11, revents=POLLIN|POLLHUP)3246 read(11, status00000reason000, 4096) = 183246 gettimeofday(1310341028, 571577, NULL) = 03246 close(10) = 03246 close(11) = 03246 unlink(maildr
13、op/7C3EA163C51) = 0当postfix发现pickup连接cleanup套接字后,通过execve调用cleanup程序,并且通过socket的通讯方式进行接收处理该邮件.下面的系统调用说明了这一点:3321 execve(/usr/libexec/postfix/cleanup, cleanup, -z, -t, unix, -u, /* 4 vars */) = 0略3321 socket(PF_NETLINK, SOCK_RAW, 0) = 83321 bind(8, sa_family=AF_NETLINK, pid=0, groups=00000000, 12) =
14、03321 getsockname(8, sa_family=AF_NETLINK, pid=3321, groups=00000000, 12) = 03321 time(NULL) = 13103414963321 sendto(8, 2400022013x932N00000000, 20, 0, sa_family=AF_NETLINK, pid=0, groups=00000000, 12) = 203321 recvmsg(8, msg_name(12)=sa_family=AF_NETLINK, pid=0, groups=00000000, msg_iov(1)=25010020
15、020x932N371f0000431000I0100000., 4096, msg_controllen=0, msg_flags=0, 0) = 12923321 recvmsg(8, msg_name(12)=sa_family=AF_NETLINK, pid=0, groups=00000000, msg_iov(1)=240003020x932N371f0000001000I0100000., 4096, msg_controllen=0, msg_flags=0, 0) = 203321 sendto(8, 2400026013y932N00000000, 20, 0, sa_fa
16、mily=AF_NETLINK, pid=0, groups=00000000, 12) = 203321 recvmsg(8, msg_name(12)=sa_family=AF_NETLINK, pid=0, groups=00000000, msg_iov(1)=000024020y932N371f00210200376100010010177001., 4096, msg_controllen=0, msg_flags=0, 0) = 1683321 recvmsg(8, msg_name(12)=sa_family=AF_NETLINK, pid=0, groups=00000000
17、, msg_iov(1)=00024020y932N371f00n2002003761000240100000., 4096, msg_controllen=0, msg_flags=0, 0) = 1283321 recvmsg(8, msg_name(12)=sa_family=AF_NETLINK, pid=0, groups=00000000, msg_iov(1)=240003020y932N371f0000001000240100000., 4096, msg_controllen=0, msg_flags=0, 0) = 20然后cleanup程序通过socket(unix套接字
18、)与trivial-rewrite服务进行通讯,即postfix检查到cleanup连接到/var/spool/postfix/private/rewrite套接字文件后,再通过execve调用trivial-rewrite程序,完成最后的清理工作.经过cleanup处理好邮件后,邮件最后被传入收件队列,也就是/var/spool/postfix/incoming目录.例如这样一个邮件队列:/var/spool/postfix/incoming/711959.3321它还要将队列名字改名,如下:rename(incoming/711959.3321, incoming/AE07E163C55)
19、 = 0最后队列管理器看到有新邮件已经入队,它确定是进行转发还是发送给本地用户,是转发还是本地的区别在用它连接使用的套接字文件,如下:本地发送:3247 connect(10, sa_family=AF_FILE, path=private/local, 110) = 0远程转发:3247 connect(13, sa_family=AF_FILE, path=private/smtp, 110) = 0值得注意的是队列管理器是独立的服务进程,如下:ps -ef|grep qmgr|grep -v greppostfix 3247 3244 0 07:36 ? 00:00:00 qmgr -l
20、 -t fifo -u最后确认我们这里是本地发送,所以postfix会用exec调用local程序完成本地邮件发送的工序,首先它会通过/etc/passwd和/etc/aliases.db来判断是否是当前系统用户或其别名,如是当前系统用户则接收存放邮件,并将文件写入到/var/mail/root下面,完成了最后的发送过程.2.3)来自网络的邮件这里分为两种,一种是外界寄给postfix所控制网域的邮件,这种情况smtpd一定会收下第一种邮件,如果收件人存在的话.第二种情况是目的地在其它网域,这种情况我们称为转发,这里先讨论第一种情况.外界寄给postfix时,postfix用smtpd dae
21、mon来处理接收外来邮件,然后通过socket文件将邮件传输给cleanup/trivial-rewrite对邮件进行规范处理,最后根据是本地用户邮件还是其它网域用户邮件选择执行对映的程序(本地是local,转发是smtp)首先我们在服务端用strace跟踪postfix进程,如下:ps -ef|grep postfixroot 2505 1 0 05:38 ? 00:00:00 /usr/libexec/postfix/masterpostfix 2508 2505 0 05:38 ? 00:00:00 qmgr -l -t fifo -upostfix 3066 2505 0 07:18
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- postfix 队列 跟踪 管理
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。