“sendmail”是预装的,我认为它不需要configuration。
我是对还是错?
但是我实际上没有发送电子邮件!
[root@jiaoyou ~]# cat mail2.txt From: [email protected] To: [email protected] MIME-Version: 1.0 Content-Type: multipart/alternative; Subject: Test HTML e-mail. This is a MIME-encapsulated message [root@jiaoyou ~]# sendmail -t -d <mail2.txt Version 8.14.3 Compiled with: DNSMAP HESIOD HES_GETMAILHOST LDAPMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8 MIME8TO7 NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS TCPWRAPPERS USERDB USE_LDAP_INIT getla(): 0.00 setoption SevenBitInput (7)=False setoption AliasWait (a)=10 setoption MinFreeBlocks (b)=100 setoption BlankSub (B)=. setoption HoldExpensive (c)=False setoption DeliveryMode (d)=i setoption QueueFileMode (0xbe)=0660 setoption TempFileMode (F)=0600 setoption HelpFile (H)=/etc/mail/helpfile setoption SendMimeErrors (j)=True setoption ForwardPath (J)= setoption ConnectionCacheSize (k)=2 setoption ConnectionCacheTimeout (K)=5m setoption UseErrorsTo (l)=False setoption LogLevel (L)=9 setoption CheckAliases (n)=False setoption OldStyleHeaders (o)=True setoption DaemonPortOptions (O)=Name=NoMTA, Addr=127.0.0.1, M=E Daemon NoMTA flags: <NOETRN> setoption UseMSP (0xcc)=True setoption PrivacyOptions (p)=goaway,noetrn,restrictqrun setoption QueueDirectory (Q)=/var/spool/clientmqueue setoption Timeout (r).queuereturn=5d setoption Timeout (r).queuewarn=4h setoption SuperSafe (s)=True setoption StatusFile (S)=/var/spool/clientmqueue/sm-client.st setoption TimeZoneSpec (t)= setoption SmtpGreetingMessage (0x90)= 0x81 j Sendmail 0x81 v/ 0x81 Z; 0x81 b setoption UnixFromLine (0x91)=From 0x81 g 0x81 d setoption OperatorChars (0x92)=.:%@!^/[]+ setoption DontInitGroups (0x93)=True setoption RunAsUser (0x9d)=smmsp setoption DontProbeInterfaces (0xa1)=True setoption TrustedUser (0xa7)=smmsp setoption PidFile (0x9f)=/var/run/sm-client.pid drop_privileges(0): Real[UG]id=0:0, get[ug]id=0:0, gete[ug]id=0:51, RunAs[UG]id=51:51 getauthinfo: root@localhost ============ SYSTEM IDENTITY (after readcf) ============ (short domain name) $w = jiaoyou (canonical domain name) $j = jiaoyou (subdomain name) $m = <null> (node name) $k = jiaoyou ======================================================== assign_queueid: assigned id n7QFdKGA008587, e=0x7f32a15d1fa0 assign_queueid: assigned id n7QFdKGB008587, e=0x7f32a15d1fa0 getla(): 0.00 setsender() --parseaddr(root) rewrite: ruleset canonify input: root rewrite: ruleset Canonify2 input: root rewrite: ruleset Canonify2 returns: root rewrite: ruleset canonify returns: root rewrite: ruleset parse input: root rewrite: ruleset Parse0 input: root map_lookup(dequote, root) => NOT FOUND (0) rewrite: ruleset Parse0 returns: root rewrite: ruleset Parse1 input: root rewrite: ruleset Parse1 returns: 0x96 local 0x98 root rewrite: ruleset parse returns: 0x96 local 0x98 root rewrite: ruleset 2 input: root rewrite: ruleset 2 returns: root rewrite: ruleset EnvToL input: root rewrite: ruleset EnvToL returns: root rewrite: ruleset final input: root rewrite: ruleset final returns: root parseaddr-->0x7f32a15d1fc0=root: mailer 3 (local), host `' user `root', ruser `<null>' state=OK, next=0x0, alias 0x0, uid 0, gid 0 flags=180<QPINGONFAILURE,QPINGONDELAY> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="(none)" rstatus="(none)" statdate=(none) rewrite: ruleset canonify input: root rewrite: ruleset Canonify2 input: root rewrite: ruleset Canonify2 returns: root rewrite: ruleset canonify returns: root rewrite: ruleset 1 input: root rewrite: ruleset 1 returns: root rewrite: ruleset final input: root rewrite: ruleset final returns: root EOH ----- collected header ----- Return-Path: < 0x81 g> Received:( 0x81 ?sfrom 0x81 s 0x81 . 0x81 ?_( 0x81 ?s 0x81 |from 0x81 . 0x81 _)\n\t 0x81 . 0x81 ? 0xa5 (authenticated 0x81 ? 0xa6 bits= 0x81 0xa6 0x81 .)\n\t 0x81 .by 0x81 j ( 0x81 v/ 0x81 Z) 0x81 ?r with 0x81 r 0x81 . id 0x81 i 0x81 ? 0xa7 \n\t(version= 0x81 0xa7 cipher= 0x81 0xa8 bits= 0x81 0xa9 verify= 0x81 0xaa ) 0x81 . 0x81 ?u\n\tfor 0x81 u; 0x81 |;\n\t 0x81 . 0x81 b) (from root@localhost)\n\tby jiaoyou (8.14.3/8.14.3/Submit) id n7QFdKGB008587;\n\tWed, 26 Aug 2009 11:39:20 -0400 Resent-Date:( 0x81 a) Wed, 26 Aug 2009 11:39:20 -0400 Date:( 0x81 a) Wed, 26 Aug 2009 11:39:20 -0400 Resent-From:( 0x81 ?x 0x81 x < 0x81 g> 0x81 | 0x81 g 0x81 .) crackaddr( root <root>) crackaddr=>` root < 0x81 g>' root <root> From:<NULL> Full-Name:( 0x81 x) root Resent-Message-Id:( < 0x81 t. 0x81 i@ 0x81 j>) <200908261539.n7QFdKGB008587@jiaoyou> Message-Id:( < 0x81 t. 0x81 i@ 0x81 j>) <200908261539.n7QFdKGB008587@jiaoyou> From: [email protected] To: [email protected] sendto: [email protected] ctladdr=[NULL] --parseaddr([email protected]) rewrite: ruleset canonify input: shore . cloud @ gmail . com rewrite: ruleset Canonify2 input: shore . cloud < @ gmail . com > map_lookup(host, gmail.com) => host_map_lookup(gmail.com) => map_rewrite(gmail.com), av = gmail.com map_rewrite => gmail.com. FOUND gmail.com gmail.com. (0) rewrite: ruleset Canonify2 returns: shore . cloud < @ gmail . com . > rewrite: ruleset canonify returns: shore . cloud < @ gmail . com . > rewrite: ruleset parse input: shore . cloud < @ gmail . com . > rewrite: ruleset Parse0 input: shore . cloud < @ gmail . com . > rewrite: ruleset Parse0 returns: shore . cloud < @ gmail . com . > rewrite: ruleset Parse1 input: shore . cloud < @ gmail . com . > rewrite: ruleset MailerToTriple input: < > shore . cloud < @ gmail . com . > rewrite: ruleset MailerToTriple returns: shore . cloud < @ gmail . com . > rewrite: ruleset Parse1 returns: 0x96 esmtp 0x97 gmail . com . 0x98 shore . cloud < @ gmail . com . > rewrite: ruleset parse returns: 0x96 esmtp 0x97 gmail . com . 0x98 shore . cloud < @ gmail . com . > rewrite: ruleset 2 input: shore . cloud < @ gmail . com . > rewrite: ruleset 2 returns: shore . cloud < @ gmail . com . > rewrite: ruleset EnvToSMTP input: shore . cloud < @ gmail . com . > rewrite: ruleset PseudoToReal input: shore . cloud < @ gmail . com . > rewrite: ruleset PseudoToReal returns: shore . cloud < @ gmail . com . > rewrite: ruleset MasqSMTP input: shore . cloud < @ gmail . com . > rewrite: ruleset MasqSMTP returns: shore . cloud < @ gmail . com . > rewrite: ruleset EnvToSMTP returns: shore . cloud < @ gmail . com . > rewrite: ruleset final input: shore . cloud < @ gmail . com . > rewrite: ruleset final returns: shore . cloud @ gmail . com parseaddr-->[email protected]: mailer 5 (esmtp), host `gmail.com.' user `[email protected]', ruser `<null>' state=OK, next=0x0, alias 0x0, uid 0, gid 0 flags=180<QPINGONFAILURE,QPINGONDELAY> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="(none)" rstatus="(none)" statdate=(none) recipient (0): [email protected]: mailer 5 (esmtp), host `gmail.com.' user `[email protected]', ruser `<null>' state=OK, next=0x0, alias 0x0, uid 0, gid 0 flags=182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="(none)" rstatus="(none)" statdate=(none) maplocaluser: [email protected]: mailer 5 (esmtp), host `gmail.com.' user `[email protected]', ruser `<null>' state=OK, next=0x0, alias 0x0, uid 0, gid 0 flags=182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="RFC822; [email protected]" rstatus="(none)" statdate=(none) rewrite: ruleset localaddr input: shore . cloud @ gmail . com rewrite: ruleset Local_localaddr input: shore . cloud @ gmail . com rewrite: ruleset ParseRecipient input: shore . cloud @ gmail . com rewrite: ruleset CanonAddr input: shore . cloud @ gmail . com rewrite: ruleset canonify input: shore . cloud @ gmail . com rewrite: ruleset Canonify2 input: shore . cloud < @ gmail . com > map_lookup(host, gmail.com) => host_map_lookup(gmail.com) => CACHE gmail.com map_rewrite(gmail.com), av = gmail.com map_rewrite => gmail.com. gmail.com. (0) rewrite: ruleset Canonify2 returns: shore . cloud < @ gmail . com . > rewrite: ruleset canonify returns: shore . cloud < @ gmail . com . > rewrite: ruleset Parse0 input: shore . cloud < @ gmail . com . > rewrite: ruleset Parse0 returns: shore . cloud < @ gmail . com . > rewrite: ruleset CanonAddr returns: shore . cloud < @ gmail . com . > rewrite: ruleset ParseRecipient returns: shore . cloud < @ gmail . com > rewrite: ruleset Local_localaddr returns: 0x96 relay 0x97 [ 127 . 0 . 0 . 1 ] 0x98 shore . cloud < @ gmail . com > rewrite: ruleset localaddr returns: 0x96 relay 0x97 [ 127 . 0 . 0 . 1 ] 0x98 shore . cloud < @ gmail . com > rewrite: ruleset 2 input: shore . cloud < @ gmail . com > rewrite: ruleset 2 returns: shore . cloud < @ gmail . com > rewrite: ruleset MasqSMTP input: shore . cloud < @ gmail . com > rewrite: ruleset MasqSMTP returns: shore . cloud < @ gmail . com > rewrite: ruleset final input: shore . cloud < @ gmail . com > rewrite: ruleset final returns: shore . cloud @ gmail . com recipient (1): [email protected]: mailer 8 (relay), host `[127.0.0.1]' user `[email protected]', ruser `<null>' state=OK, next=0x0, alias 0x7f32a16a4598, uid 0, gid 0 flags=182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="RFC822; [email protected]" rstatus="(none)" statdate=(none) MIME-Version: 1.0 Content-Type: multipart/alternative; Subject: Test HTML e-mail. ---------------------------- From person = "root" getla(): 0.00 ===== SENDALL: mode i, id n7QFdKGB008587, e_from 0x7f32a15d1fc0=root: mailer 3 (local), host `' user `root', ruser `<null>' state=SENDER, next=0x0, alias 0x0, uid 0, gid 0 flags=181<QGOODUID,QPINGONFAILURE,QPINGONDELAY> owner=(none), home="/root", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="(none)" rstatus="(none)" statdate=(none) e_flags = 4605041<OLDSTYLE,DELETE_BCC,GLOBALERRS,METOO,HAS_DF,IS_MIME,SPLIT> sendqueue: [email protected]: mailer 8 (relay), host `[127.0.0.1]' user `[email protected]', ruser `<null>' state=OK, next=0x7f32a16a4598, alias 0x7f32a16a4598, uid 0, gid 0 flags=80000182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY,QRCPTOK> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="RFC822; [email protected]" rstatus="(none)" statdate=(none) [email protected]: mailer 5 (esmtp), host `gmail.com.' user `[email protected]', ruser `<null>' state=REPLACED, next=0x0, alias 0x0, uid 0, gid 0 flags=80000182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY,QRCPTOK> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="RFC822; [email protected]" rstatus="(none)" statdate=(none) >>>>> queueing /var/spool/clientmqueue/./qfn7QFdKGB008587 (new id) >>>>> queueing [email protected]: mailer 8 (relay), host `[127.0.0.1]' user `[email protected]', ruser `<null>' state=OK, next=0x7f32a16a4598, alias 0x7f32a16a4598, uid 0, gid 0 flags=80000182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY,QRCPTOK> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="RFC822; [email protected]" rstatus="(none)" statdate=(none) remotename([email protected]) remotename([email protected]) <<<<< done queueing n7QFdKGB008587 <<<<< --deliver, id=n7QFdKGB008587, mailer=relay, host=`[127.0.0.1]', first user=`[email protected]' remotename(root) rewrite: ruleset canonify input: root rewrite: ruleset Canonify2 input: root rewrite: ruleset Canonify2 returns: root rewrite: ruleset canonify returns: root rewrite: ruleset 1 input: root rewrite: ruleset 1 returns: root rewrite: ruleset EnvFromSMTP input: root rewrite: ruleset PseudoToReal input: root rewrite: ruleset PseudoToReal returns: root rewrite: ruleset MasqSMTP input: root rewrite: ruleset MasqSMTP returns: root < @ *LOCAL* > rewrite: ruleset MasqEnv input: root < @ *LOCAL* > rewrite: ruleset MasqEnv returns: root < @ jiaoyou . > rewrite: ruleset EnvFromSMTP returns: root < @ jiaoyou . > rewrite: ruleset final input: root < @ jiaoyou . > rewrite: ruleset final returns: root @ jiaoyou remotename => `root@jiaoyou' hostsignature([127.0.0.1]) = [127.0.0.1] send to [email protected]: mailer 8 (relay), host `[127.0.0.1]' user `[email protected]', ruser `<null>' state=OK, next=0x7f32a16a4598, alias 0x7f32a16a4598, uid 0, gid 0 flags=80000182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY,QRCPTOK> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=(none), status=(none) finalrcpt="RFC822; [email protected]" rstatus="(none)" statdate=(none) checkcompat([email protected], from=root) openmailer: TCP [127.0.0.1] makeconnection ([127.0.0.1] [127.0.0.1].25 (10)) makeconnection: fd=6 Connecting to [127.0.0.1]... Connect failed (Connection refused by [127.0.0.1]); retrying with AF_INET.... makeconnection ([127.0.0.1] [127.0.0.1].25 (2)) makeconnection: fd=6 Connecting to [127.0.0.1]... Connect failed (Connection refused by [127.0.0.1]) openmailer: makeconnection => stat=75, errno=111 openmailer: MCI@0x7f32a16926c8: flags=0, errno=111, herrno=0, exitstat=75, state=0, pid=0, maxsize=0, phase=initial connection, mailer=relay, status=4.4.1, rstatus=(null), host=[127.0.0.1], lastuse=Wed Aug 26 11:39:21 2009 dropenvelope 0x7f32a15d1fa0: id=n7QFdKGB008587, flags=4605043<OLDSTYLE,INQUEUE,DELETE_BCC,GLOBALERRS,METOO,HAS_DF,IS_MIME,SPLIT> >>>>> queueing /var/spool/clientmqueue/./qfn7QFdKGB008587 >>>>> queueing [email protected]: mailer 8 (relay), host `[127.0.0.1]' user `[email protected]', ruser `<null>' state=QUEUEUP, next=0x7f32a16a4598, alias 0x7f32a16a4598, uid 0, gid 0 flags=80000182<QPRIMARY,QPINGONFAILURE,QPINGONDELAY,QRCPTOK> owner=(none), home="(none)", fullname="(none)" orcpt="(none)", statmta=[127.0.0.1], status=4.4.1 finalrcpt="RFC822; [email protected]" rstatus="(none)" statdate=Wed Aug 26 11:39:21 2009 remotename([email protected]) remotename([email protected]) <<<<< done queueing n7QFdKGB008587 <<<<< ====finis: stat 75 e_id=NOQUEUE e_flags=4405043<OLDSTYLE,INQUEUE,DELETE_BCC,GLOBALERRS,METOO,IS_MIME,SPLIT>
简短的回答是“不,不需要configuration发送电子邮件”。
很长的回答是,“如果你想发送/接收电子邮件,你可能会想要查看它,并configuration它,你也想看看你的DNS,SPFlogging,反转PTRlogging,如果你想有一个良好的function邮件服务器。“
实际上,configuration邮件服务器的工作量相当大。
如果所有你想要做的是有一个脚本发送偶尔的电子邮件,虽然…你可能没事。 (除非你的邮件服务器是积极的垃圾邮件和检查邮件确定发送服务器是真正的邮件服务器…但我离题…)
希望这可以帮助。
Sendmail只能在许多系统上发送初始安装的邮件。 如果您希望通过外部服务接收系统上的电子邮件,则需要重新configuration。