1,根据book,先安装procmail make LOCKINGTEST=/tmp install && make install-suid 中间询问what is your mailer called? 我直接回车了 完成后没有/etc/procmailrc文件,先不管了 2,安装sendmail了 建立smmsp组和用户, 建立site.config.m4,连接进来tcpwrapper,openssl,sasl,openldap sh Build 出错: map.c: In function `db_map_open‘: > map.c:1620: warning: passing arg 2 of pointer to function from incompatible pointer typemap.c: In function `db_map_open‘: 搜索google,linuxfromscratch上有,但我打不开,代理都不好用,郁闷啊 找到了使用google快照功能的方法,在search?q=cache 中间加入一个字符,比如&,把search? 和 q=cache分开,这个好啊 Yeah,我通过上面提到的方法,使用了快照,还可以通过直接在搜索栏里 cache:url地址 的方法直接访问cache 通过查看lfs的邮件列表,知道是因为db太新了的缘故,db-open函数变化了,可以直接修改,我找到map.c的1620页,再第四个参数后加了一个NULL,编译就过去了 新错误:一大堆啊,真郁闷啊,看来是我下载的sendmail-8.10.0的版本太低了,得去找BOOK上的8.13.4或者更新的 这里主要学到了使用google的cache功能 搜索天网,通过wget直接下回来了,这回的sh Build就顺利了 cd ../cf/cf cp generic-linux.mc sendmail.mc && sh Build sendmail.cf 按照BOOK安装完 配制: echo $(hostname) > /etc/mail/local-host-names cat > /etc/mail/aliases << "EOF" postmaster: root MAILER-DAEMON: root EOF newaliases -v 往后不直接边界sendmail.cf,而是通过sendmail.mc生成 m4 m4/cf.m4 sendmail.mc > sendmail.cf 启动 通过sendmail -v -bi 调试启动 可以看到 WARNING: local host name () is not qualified; see cf/README: WHO AM I? /etc/mail/aliases: 42 aliases, longest 10 bytes, 432 bytes total 成功应该是成功了,再试daemon模式 sendmail -bd -q30m 开始很久没反应,还以为是死了,原来是要过比较久 telnet 127.0.0.1 25 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is ‘^]‘. 220 mylinux ESMTP Sendmail 8.13.4/8.13.4; Wed, 1 Nov 2006 06:25:05 +0800 ehlo test(我输入的命令) 250-mylinux Hello mylinux [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-EXPN 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 250-DELIVERBY 250 HELP quit(退出命令) 221 2.0.0 mylinux closing connection Connection closed by foreign host. 成功! 配置sasl认证 重新编译,在上回configure参数的基础上,顺便加上--enable-ldapdb(在openLDAP的安装中说过),当然加上这里需要的--enable-login 但提示: checking for ldap_initialize in -lldap... (cached) no configure: error: Cannot enable LDAPDB plugin: Could not locate OpenLDAP 我用--with-ldap=/usr/lib 还是不行,只好把--enable-ldapdb去掉了 OK,进入saslauthd目录编译testsaslauthd,然后拷贝testauthd到/usr/sbin目录下去 知道sasl的配置文件是/usr/lib/sasl2/Appname.conf echo ‘pwcheck_method: saslauthd‘ > Sendmail.conf 验证saslauthd saslauthd -a shadow testsaslauthd -u blfs -p blfs 0: OK "Success." 验证OK 使用sendmail发信 telnet 127.0.0.1 25 mail From: mylinux@ip 这里,开始在@后面开始我怎么写都说无法解析域名,使用ip地址也不行 然后我quit退出,ping也居然说不知道的主机,查看我的resolve.conf,一看才知道我的nameserver只设了我自己127.0.0.1 再添上我们的DNS服务器,这回可以通了吧,再试,一下子没反应,等我把后面命令输完了才告诉我说还是无法解析,晕 我启动我自己的DNS服务器,使用mylinx@mylinux.com,还是不行,一直到。。。 mail From: mylinux@www.mylinux.com 成功得到250,sender OK rcpt To:myemail 250 Recipient ok data 354 Enter mail,end with “.”on a line itself hi,this is my test i am happy . quit 写到这里,我查看了我邮箱,Yeah,收到了,和和,再测试了向163和21cn发,也收到了 我试验了我们学校的smtp,它用的是sendmail-8.12.8的版本,并且也是不用验证的,可以发匿名信件 而163的却不行,220 163.com Anti-spam GT for Coremail System (163com[20050206]) 21cn的也是: 220 aisp2-smtp antispam proxy server is ready helo test 250 21cn.com mail from: mylinux@scut.edu.cn 553 mylinux@scut.edu.cn: Sender address rejected: not logged in help 502 Error: command not implemented 它们商业用途的安全多了啊 另外,我在我windows里发不了,rcpt To: root@www.mylinux.com 550 5.7.1 root@www.mylinux.com... Relaying denied. IP name possibly forged [windows ip] 配置sendmail+sasl,还是根据http://www./bbs/showthread.php?t=103163 检查我的/etc/mail下的sendmail.cf和sendmail.mc,很少信息 cd /etc/mail vi cf/sendmail.mc 添加: TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN‘)dnl define(`confAUTH_MECHANISMS‘, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN‘)dnl 然后通过上面介绍的命令 m4 m4/cf.m4 sendmail.mc > sendmail.cf 更新 重启sendmail服务,登陆ehlo ehlo localhost 250-mylinux Hello mylinux [127.0.0.1], pleased to meet you 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-EXPN 250-VERB 250-8BITMIME 250-SIZE 250-DSN 250-ETRN 250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN 250-DELIVERBY 250 HELP 出现了LOGIN PLAIN认证方式 然后使用 auth login auth login 334 VXNlcm5hbWU6 amVwaGU= 501 5.5.4 cannot decode AUTH parameter amVwaGU= 这里不知道怎么通过验证,找到http://www./forum/gshowflat.php?Cat=&Board=dns&Number=164089&page=0&view=expanded&sb=6&o=all 先在系统里建立jephe用户,知道jephe转化成base64格式是 amVwaGU= 但我试图改变jephe的密码也为jephe时,我的passwd出错了 passwd jephe passwd: Critical error - immediate abort 郁闷啊 google说有时候磁盘满了会出现这样的情况,但我的情况应该不是这样的 找到了,原来是我的/etc/pam.d/passwd中应用cracklib造成的,我依照BOOK中不用cracklib的情况修改 ,可以了 重新启动sendmail saslauthd -a shadow testsaslauthd -u jephe -p jephe 成功 再在sendmail中验证,成功! auth login 334 VXNlcm5hbWU6 amVwaGU= 334 UGFzc3dvcmQ6 amVwaGU= 235 2.0.0 OK Authenticated 通过验证就可以通过我的windows发信了 查看http://72.14.203.104/search?hl=zh-CN&newwindow=1&q=cache%3Ahttp%3A%2F%2Fwww.feep.net%2Fsendmail%2Ftutorial%2Fintro%2FMUA-MTA-MDA.html&lr= 明确MUA,MTA,MDA的作用和区别 查看http://72.14.203.104/search?hl=zh-CN&newwindow=1&q=cache%3Ahttp%3A%2F%2Fwww.sendmail.org%2F~ca%2Femail%2Fauth.html&lr= 明确sendmail的验证方式 在outlook中设置smtp的地址为我mylinux地址,发送服务器要求身份验证,填上jephe,jephe,成功发送邮件! |
|