ºìÁªLinuxÃÅ»§
Linux°ïÖú

linuxÏÂsendmailµÄÅäÖÃ(Ô´Âë°ü)

·¢²¼Ê±¼ä:2006-11-10 00:51:15À´Ô´:ºìÁª×÷Õß:multitude
SendmailÅäÖÃ
°²×°ËùÐèÈí¼þ
sendmail.8.12.10.tar.gz http://www.sendmail.org/
cyrus-sasl-2.1.18.tar.gz http://asg.web.cmu.edu/cyrus/

°²×°²½Öè
1¡¢ ÏȰ²×°cyrus-sasl-2.1.18.tar.gz£¬sendmail°²×°Ê±ÒªÓõ½sasl£¨¼òµ¥ÈÏÖ¤ºÍ°²È«²ãЭÒ飩µÄ¿âÎļþµÄÍ·Îļþ¡£
½âѹËõ£º
# tar -zxvf cyrus-sasl-2.1.18.tar.gz
±àÒë:
½øÈë¸Õ½âѹµÄÔ´ÂëĿ¼£¬ÔËÐÐÒÔÏÂÃüÁîÍê³É°²×°¡£
#./configure --prefix=/usr/local/sasl2 --enable-login
Ò»¶¨Òª¼Ó--enable-login£¬ÒòΪSASL2ĬÈϲ»Ö§³ÖloginÕâÖÖÑéÖ¤·½Ê½£¬¶øOUTLOOKÊÇͨ¹ý
loginÀ´½øÐÐSMTPÑéÖ¤µÄ¡£
#make # ±àÒë
#make install # °²×°
Íê³ÉÒÔÉÏlinux³ÌÐò°²×°Èý²½ÇúÖ®ºó£¬¾Í¿ÉÒÔ¿ªÊ¼ÅäÖúͲâÊÔÁË¡£

2¡¢ÅäÖÃSASL
ΪÁ˰ÑSASLÓ¦ÓÃÓÚsendmailÈÏÖ¤£¬»¹Ðè½øÐÐһЩÅäÖù¤×÷¡£sendmail»áµ½/usr/libĿ¼ÏÂÈ¥
ÕÒSASL2¿â£¬¶øÎÒÃÇÊǰѳÌÐò°²×°ÔÚ/usr/local/sasl2ÖУ¬ÎªÊ²Ã´²»°ÑÈí¼þ°²×°ÔÚ/usr/libĿ¼
ÄØ£¿ÕâÖ÷ÒªÊÇΪÁ˺ùÜÀí×ÔÒѰ²×°µÄÈí¼þÀ²¡£ËùÒÔÎÒÃÇÒªÔÚ/usr/libĿ¼ÏÂ×öÒ»¸öÁ´½Ó:
# cd /usr/lib
# ln -s /usr/local/sasl2/lib/* .
ok£¬½Ó×ÅÒªÔÚ/var/Ŀ¼Ï½¨Ò»¸öĿ¼¸øsaslauthd½ø³Ì´æÔÚÁÙʱÊý¾Ý¡£
# cd /var
# mkdir state
# cd state
# mkdir saslauthd
×¢£ºÈç¹ûûÓÐÕâЩĿ¼£¬ÔËÐÐsaslauthdʱ£¬»áÌáʾ³ö´í¡£
ok,½Ó×ÅΪȷ±£CYRUS-SASL2º¯Êý¿âÖªµÀÔõÑùÑéÖ¤ËùÊÕÀ´µÄSASLÈÏÖ¤ÇëÇ󣬱ØÐë´´½¨Ò»
¸öSASLµÄÅäÖÃÎļþÀ´°ÑMTA³ÌÐò¶¨Òå³ÉÒ»¸öSASLÓ¦Óá£ÅäÖÃÎļþÃûΪSendmail.conf£¨×¢
ÒâÊÇ´óдµÄS£©,λÓÚ/usr/lib/sasl2Ŀ¼ÖУ¬Ò²¾ÍÊÇ/usr/local/sasl2/lib/sasl2Õâ¸öĿ¼£¬¼ÇµÃÉÏ
ÃæÐ½¨µÄÁ´½ÓÁËÂð£¿ÔÚ¸ÃÎļþÖÐÄ㶨ÒåÄãÏ£ÍûʹÓõÄÈÏÖ¤Êý¾Ý¿â·½·¨£¬ÒÔÏÂÕâ¸öÀý×ÓʹÓÃ
saslauthdÀ´ÑéÖ¤ÈÏÖ¤ÇëÇó¡£
# cd /usr/lib/sasl2
# echo 'pwcheck_method: saslauthd' >; Sendmail.conf

3¡¢²âÊÔ
ok,ÏÖÔÚ¿ÉÒÔÔËÐÐsaslauthdÁË£¬²¢½øÐвâÊÔ¡£
# cd /usr/local/sasl2/sbin
# ./saslauthd -a shadow
ÓÃshadowµÄÓû§ºÍÃÜÂë½øÐÐÑéÖ¤
# ./testsaslauthd -u userid -p password
0: OK "Success."
Èç¹û³öÏÖÒÔÉÏÐÅÏ¢£¬¾Í˵Ã÷saslauthdÕý³£ÔËÐÐÁË¡£testsaslauthd³ÌÐòĬÈÏÊÇûÓбàÒëµÄ£¬Äã
ÐèÒªÔÚÔ´ÂëĿ¼Ê÷µÄsaslauthd×ÓĿ¼ÖÐÔËÐÐ # make testsaslauthdÃüÁîÉú³É¡£

4¡¢sasl2°²×°Íê³Éºó£¬¾ÍÒª¿ªÊ¼°²×°sendmailÁË¡£
ÏȽâѹsendmailÔ´Âë¡£
# tar -zxvf sendmail.8.12.10.tar.gz
Èç¹ûÒªsendmailÖ§³ÖSASL£¬ÐèÒªÐÞ¸ÄÔ´ÂëµÄλÖÃÅäÖÃÎļþsite.config.m4¡£site.config.m4λ
ÓÚÔ´ÂëĿ¼Ê÷µÄdevtools/Site¡£ÎļþÖÐÓ¦°üº¬ÒÔÏÂÐУº
PREPENDDEF(`confMAPDEF', `-DMAP_REGEX')
APPENDDEF(`confENVDEF', `-DTCPWRAPPERS -DSASL=2')
APPENDDEF(`conf_sendmail_LIBS', `-lwrap -lsasl2')
APPENDDEF(`confLIBDIRS', `-L/usr/local/sasl2/lib')
APPENDDEF(`confINCDIRS', `-I/usr/local/sasl2/include')
µÚÒ»ÐÐÅäÖÃÕýÔò±í´ïʽÏà¹ØÄÚÈÝ
µÚ¶þ¡¢ÈýÐÐÅäÖñíʾÔÚsendmail³ÌÐòÖÐÖ§³Ösasl2ºÍtcp_wrapper£¨¿Éͨ¹ýhosts.allowºÍ
hosts.deny¿ØÖÆ·ÃÎÊ£©
µÚËÄ¡¢ÎåÐÐÅäÖÃÖ¸³ösasl2µÄ¿âÎļþºÍÍ·ÎļþµÄλÖá£

ok,½Ó×ÅÔÚ±àÒëǰҪ½¨Á¢Ò»Ð©Óû§ºÍĿ¼£¬²¢È·±£ÓÐÕýÈ·µÄȨÏÞ¡£
sendmail±ØÐëÓÐÒ»¸öset-group-id£¨Ä¬ÈÏÊÇsmmsp×飩µÄ³ÌÐòÀ´ÔÚÒ»¸ö×é¿ÉдµÄĿ¼Öвéѯ
ÅŶÓÓʼþ¡£ËùÒÔÎÒÃÇÒª½¨Á¢Ò»¸ösmmspÓû§ºÍ×é¡£²¢½¨Á¢ÈçÏÂĿ¼²¢ÉèÖÃÏàÓ¦µÄȨÏÞ£¬¾ß
ÌåÉèÖÃÒªÇó¿É²éѯԴÂëĿ¼Ê÷ÏÂsendmail/SECURITYÎĵµ¡£
# groupadd smmsp
# useradd smmsp -d /var/spool/clientmqueue -s /dev/null
# mkdir /var/spool/clientmqueue
# chown -R smmsp:smmsp /var/spool/clientmqueue
# chmod -R 770 /var/spool/clientmqueue
# mkdir /etc/mail
# mkdir /var/spool/mqueue
# chmod go-w / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue
# chown root / /etc /etc/mail /usr /var /var/spool /var/spool/mqueue

ok,½ÓÏÂÀ´¾Í¿ÉÒÔ½øÈëÔ´ÂëĿ¼Ê÷¿ªÊ¼±àÒëÁË¡£
# ./Build -c
-cÑ¡ÏîÄÜɾ³ýÉϴαàÒë²úÉúµÄÎļþ¡£
# ./Build install
±àÒëÍê³Éºó¾Í¿ÉÒÔ½øÐа²×°¡£

5¡¢sendmailÅäÖÃ
ÒªsendmailÕý³£ÔËÐУ¬»¹ÐèÅäÖü¸¸öÎļþ£¬Ê×ÏÈ×îÖØÒªµÄ¾ÍÊÇsendmail.cf ÎļþÁË¡£ËüÔÚÔ´
ÂëĿ¼Ê÷ϵÄcf/cfĿ¼ÏÂÓкܶàÀý×ӿɲο¼¡£Äã¿ÉÒÔ¿½±´Ê¹Óá£ÓÉÓÚsendmail.cfÖеÄÓï·¨
ºÜ¸´ÔÓ£¬ËùÒÔ²»½¨ÒéÊÖ¹¤Ð޸ġ£ÎÒÃÇ¿ÉÒÔÒÔsendmail.mcÎĵµÅäºÏsendmail-cfĿ¼Ïµĺêͨ
¹ým4Ô¤´¦ÀíÆ÷×Ô¶¯Éú³É¡£m4Ô¤´¦ÀíÆ÷ÓÃÀ´´ÓÒ»×éºêÎļþÖд´½¨sendmailÅäÖÃÎļþ¡£ºêÎÄ
¼þ×÷ΪÊäÈë±»¶Á½øÀ´¡£ºê±»Õ¹¿ª£¬È»ºóдµ½Ò»¸öÊä³öÎļþ¡£sendmail-cfĿ¼һ°ã·ÅÔÚ/usr/share
Ŀ¼Ï¡£Æäʵsendmail-cfĿ¼µÄÄÚÈݺÍÔ´ÂëĿ¼Ê÷ϵÄcfĿ¼µÄÄÚÈÝÊÇÒ»ÑùµÄ£¬ËùÒÔ£¬Îª
Á˱£Ö¤sendmail-cfĿ¼µÄÄÚÈÝÓë°²×°°æ±¾Í¬²½£¬Òª°ÑÔ´ÂëĿ¼Ê÷ϵÄcfĿ¼µÄÄÚÈÝ¿½±´µ½
/usr/share/sendmail-cfĿ¼¡£

sendmail.mcÅäÖÃÎĵµÄÚÈÝÈçÏ£º
divert(-1)
include(`/usr/share/sendmail-cf/m4/cf.m4')
VERSIONID(`linux setup for Red Hat Linux')dnl
OSTYPE(`linux')
dnl Uncomment and edit the following line if your mail needs to be sent out
dnl through an external mail server:
dnl define(`SMART_HOST',`smtp.your.provider')
define(`confDEF_USER_ID',``8:12'')dnl
undefine(`UUCP_RELAY')dnl
undefine(`BITNET_RELAY')dnl
dnl define(`confAUTO_REBUILD')dnl
define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST',true)dnl
define(`confDONT_PROBE_INTERFACES',true)dnl
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/mail/aliases')dnl
define(`STATUS_FILE', `/etc/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl
dnl define(`confCACERT_PATH',`/usr/share/ssl/certs')
dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt')
dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem')
dnl define(`confTO_QUEUEWARN', `4h')dnl
dnl define(`confTO_QUEUERETURN', `5d')dnl
dnl define(`confQUEUE_LA', `12')dnl
dnl define(`confREFUSE_LA', `18')dnl
define(`confTO_IDENT', `0')dnl
dnl FEATURE(delay_checks)dnl
FEATURE(`no_default_msa',`dnl')dnl
FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
dnl The '-t' option will retry delivery if e.g. the user runs over his quota.
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db',`hash -T; -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl
EXPOSED_USER(`root')dnl
dnl This changes sendmail to only listen on the loopback device 127.0.0.1
dnl and not on any other network devices. Comment this out if you want
dnl to accept email over the network.
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')
dnl NOTE: binding both IPv4 and IPv6 daemon to the same port requires
dnl a kernel patch
dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')
dnl We strongly recommend to comment this one out if you want to protect
dnl yourself from spam. However, the laptop and users on computers that do
dnl not have 24x7 DNS do need this.
FEATURE(`accept_unresolvable_domains')dnl
dnl FEATURE(`relay_based_on_MX')dnl
MAILER(smtp)dnl
MAILER(procmail)dnl

¼ÇµÃҪʹÒÔÏÂÁ½¸öÌõÓï¾äÓÐЧ£¬ËüµÄÒâ˼ÊÇÈç¹ûaccess.db·ÃÎÊ¿ØÖÆÃ»ÓÐÉèÖã¬ÔòÆôÓÃÒÔÏÂ
ÑéÖ¤·½Ê½½øÐÐsmtpÑéÖ¤¡£
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5
LOGIN PLAIN')dnl

sendmailºê¶¨Òå˵Ã÷
divert(n) Ϊm4¶¨ÒåÒ»¸ö»º³å¶¯×÷£¬µ±n=-1ʱ»º³å±»É¾³ý£¬n=0ʱ¿ªÊ¼Ò»¸öлº³å
OSTYPE ¶¨ÒåºêËùʹÓõIJÙ×÷ϵͳ£¬¸ÃºêÔÊÐím4³ÌÐòÔö¼ÓͬÏà¹Ø²Ù×÷ϵͳÏà¹ØµÄ
Îļþ
Domain ¶¨ÒåMTA½«Ê¹ÓÃÄÄЩÓòÀ´´«ÊäÓʼþ
Feature ¶¨ÒåÅäÖÃÎļþÖÐʹÓõÄÒ»¸öÌØ¶¨µÄ¹¦Äܼ¯
Define ¶¨ÒåÅäÖÃÎļþÖеÄÒ»¸öÌØ¶¨µÄÑ¡ÏîÖµ
MASQUERADE_AS ¶¨ÒåsendmailÀ´Ó¦´ðÓʼþµÄÆäËüÖ÷»úÃû
MAILER ¶¨ÒåsendmailʹÓõÄÓʼþ´«Êä·½·¨
dnl ×¢ÊÍ

Íê³Ésendmail.mcÎĵµµÄ±àдºó¾Í¿ÉÒÔÓÃm4³ÌÐòÉú³ÉÕýʽµÄsendmail.cfÅäÖÃÎĵµ¡£Óï·¨Èç
주
# m4 sendmail.mc >; sendmail.cf
Ò²¿ÉÒÔÓÃÔ´ÂëĿ¼Ê÷ϵÄcf/cf/BuildÃüÁîÉú³É¡£Ç°ÌáÊÇÄãÒªÔÚ¸ÃĿ¼ÏÂÓÐÒ»¸ösendmail.mc
Îĵµ¡£Óï·¨ÈçÏ£º
# ./Build sendmail.cf

ok£¬½ÓמͿÉÒÔ°Ñsendmail.cf and submit.cfÎĵµ°²×°µ½/etc/mailĿ¼Öеģ¬Óï·¨ÈçÏ£º
# ./Build install-cf
ÆäʵҲ¿ÉÒÔ×ÔÒÑÓÃcpÃüÁ±´µÄÀ²¡£¼ÇµÃ°Ñsendmail.mcÎĵµÒ²¿½±´Ò»·Ýµ½/etc/mailĿ¼£¬
ÒÔ±ãÒÔºóÐÞ¸ÄÅäÖÃʱ¿ÉÖØÐÂÉú³Ésendmail.cfÎĵµ¡£

ok,½Ó×ŵ½/etc/mailĿ¼ÏÂÅäÖÃһЩÎĵµ¡£
# cd /etc/mail
# echo 'examply.com' >;>; local-host-names ½ÓÊÕÓʼþµÄÖ÷»úÃû
# echo 'localhost RELAY' >;>; access ÓÃÀ´¾Ü¾ø»òÔÊÐíÀ´×Ôij¸öÓòµÄÓʼþ£¬±¾ÀýÔÊÐí
±¾µØ×ª·¢¡£
# makemap hash access < access Éú³Éaccess.dbÊý¾Ý¿â
# touch domaintable ÓÃÀ´°Ñ¾ÉÓòÃûÓ³É以ÐÂÓòÃû
# makemap hash domaintable < domaintable
# touch mailertable À´¸²¸ÇÏòÖ¸¶¨ÓòµÄ·ÓÉ
# makemap hash mailertable < mailertable
# touch trusted-users
# touch virtusertable ÓÃÀ´°ÑÓû§ºÍÓòÃûÓ³Éäµ½ÆäËüµØÖ·
# makemap hash virtusertable < virtusertable
# chown root:wheel /var/spool/mqueue/
# chmod 700 /var/spool/mqueue
# touch aliases ±ðÃûÊý¾Ý¿â£¬Îı¾ÐÎʽ¡£¿É²ÎÕÕÔ´ÂëĿ¼Ê÷ÏÂ
sendmail/aliasesÎļþ¡£
# newaliases ´ÓÎı¾ÎļþÖд´½¨Ò»¸öеıðÃûÊý¾Ý¿âÎļþ¡£
# sendmail -v -bi µ÷ÊÔÆô¶¯¡£
/etc/mail/aliases: 42 aliases, longest 10 bytes, 432 bytes total
Èç¹û³öÏÖÒÔÉÏÌáʾÐÅÏ¢£¬ÔòÆô¶¯³É¹¦¡£¿ÉÓÃÒÔÏÂÃüÁîÕýʽÆô¶¯:
# sendmail -bd -q30m
¸ÃÃüÁîÒÔºǫ́½ø³Ì·½Ê½£¨-bd£©ÔËÐУ¬²¢Ê¹Æäÿ¸ô30·ÖÖÓ£¨-q30m£©ÂÖѯһ´Îδ·¢ËÍÓʼþ¶Ó
ÁУ¬¼ì²éÊÇ·ñÓÐÐÂÓʼþ¡£

·þÎñÆ÷Æô¶¯ºó£¬¿ÉÒÔÓÃtelnetÁ¬½Ó·þÎñÆ÷¡£
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 test.tigerhead ESMTP Sendmail 8.12.10/8.12.10; Tue, 30 Mar 2004 14:50:14 +0800
ehlo test ÄãÊäÈëµÄÃüÁ°´»Ø³µ½áÊø¡£
250-test.tigerhead Hello LOCALHOST.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP
ÒÔ250-¿ªÍ·µÄΪ·þÎñÆ÷µÄÏìÓ¦ÐÅÏ¢¡£×¢Òâµ¹ÊýµÚÈýÐУ¬Õâ¾ÍÊdzɹ¦ÅäÖÃsmtpÑéÖ¤µÄÏÔʾ¡£
ÊäÈëquitÀ뿪¡£



°²×°Íê³ÉºóΪȷ±£ÏµÍ³°²È«,»¹Ðèµ÷ÕûһЩĿ¼µÄȨÏÞ¡£¿É²Î¿¼sendmailÔ´ÂëĿ¼ÏÂ
sendmail/SECURITYÎĵµ¡£
# chmod 0640 /etc/mail/aliases /etc/mail/aliases.{db,pag,dir}
# chmod 0640 /etc/mail/*.{db,pag,dir}
# chmod 0640 /etc/mail/statistics /var/log/sendmail.st
# chmod 0600 /var/run/sendmail.pid /etc/mail/sendmail.pid
-r-xr-sr-x root smmsp ... /PATH/TO/sendmail
drwxrwx--- smmsp smmsp ... /var/spool/clientmqueue
drwx------ root wheel ... /var/spool/mqueue
-r--r--r-- root wheel ... /etc/mail/sendmail.cf
-r--r--r-- root wheel ... /etc/mail/submit.cf

6¡¢sendmail¹¦ÄܽéÉÜ
aliases ±ðÃûÊý¾Ý¿âÉèÖÃ
test: test1,test2,test3 ÉèÖÃtestȺ×é±ðÃû£¬test²»ÊÇÒ»¸öʵ¼ÊµÄÓû§£¬Ö»ÊÇÒ»¸ö±ðÃû¡£·¢¸ø
testµÄÐÅ£¬test1,2,3¶¼¿ÉÊÕµ½¡£
test: test,testbak ÔÚtestbakÓÊÏäÖб¸·ÝtestµÄÓʼþ¡£
test: test,test@163.com Ô¶³ÌÓʼþ±¸·Ý£¬Ô­ÀíͬÉÏ¡£
test: :include: /etc/mail/userlist ʹÓÃÓû§ÁбíÉèÖÃȺ×é¡£
userlist¸ñʽÈçÏ£º
test1, \
test2, \
test3, \
test4
¹ØÓÚϵͳԤÉèaliases,ÓÉÓÚsendmailÔ¤ÉèÓÃmailer-daemon and postmaster×÷Ϊ×ÊÁÏ´«ËÍÕߣ¬
»òÓʼþÍ˻صÄÕʺţ¬µ«ÏµÍ³Êµ¼ÊûÓÐÕâÁ½¸öÕʺţ¬ËùÒÔÒªÈçÏÂÉèÖñðÃû¡£
mailer-daemon: postmaster
postmaster: root
ÉèÖÃÍê³Éºó²»ÒªÍüÁËÓÃnewaliasesÃüÁîÉú³ÉÊý¾Ý¿â¡£

~/.forwardÎļþÅäÖÃ
Æäʵ¸ÃÎĵµµÄ×÷ÓúÍaliasesÊý¾Ý¿âµÄ×÷²î²»¶àÀ²£¬¶¼ÊÇÅäÖñðÃû£¬×öÓʼþת·¢µÄ¡£ÒòΪalises
Ö»ÄÜÓɹÜÀíÔ±¿ØÖÆ£¬¸öÈËÓû§²»ÄÜÐ޸ģ¬ËùÒԾͿÉÒÔÔÚ¸öÈ˵ÄĿ¼Ï½¨Á¢Ò»¸öת¼ÄÎĵµ¡£ÒÔ
ÉèÖøöÈ˵ÄÓʼþת¼ÄÁÐ±í¡£Îĵµ¸ñʽÈçÏ£º
test
test1
test2
test3
and os on
µ«ÓÉÓÚ¸öÈËÓû§°²È«Òâʶ²î£¬Èç¹ûÉèÖò»µ±»áÓа²È«Â©¶´£¬²»½¨ÒéʹÓá£

access·ÃÎÊ¿ØÖÆÁбíÉèÖÃ
92.168 RELAY
test.NET OK
test.COM REJECT
test.COM 550 SORRY,WE DON'T ALLOW SPAMMERS HERE
test.ORG DISCARD
Ok--Ô¶³ÌÖ÷»ú¿ÉÒÔÏòÄãµÄÓʼþ·þÎñÆ÷·¢ËÍÓʼþ£»
RELAY--ÔÊÐíÖÐת£»
REJECT--²»ÄÜÏòÄãµÄÓʼþ·þÎñÆ÷·¢ÓʼþºÍ²»ÄÜÖÐת£»
DISCARD--·¢À´µÄÓʼþ½«±»¶ªÆú£¬Í¬Ê±²¢²»Ïò·¢ËÍÕß·µ»Ø´íÎóÐÅÏ¢¡£
nnn text-- ·¢À´µÄÓʼþ½«±»¶ªÆú£¬µ«sendmail½«»áÏò·¢ËÍÕß·µ»ØnnnÈ·¶¨µÄsmtp´úÂëºÍtext
±äÁ¿È·¶¨µÄÎı¾ÃèÊö¡£
ÉèÖÃÍê³ÉºóÒªÓÃmakemap hash access.db < accessÃüÁîÉú³ÉÊý¾Ý¿â¡£

mailqÓʼþ¶ÓÁвéѯÃüÁî¡£
Q-ID ÓʼþidºÅ¡£
Size ÓʼþÈÝÁ¿¡£
Q-Time Óʼþ½øÈë¶ÓÁУ¨Ò²¾ÍÊÇ/var/spool/mqueueĿ¼£©µÄʱ¼äºÍ²»ÄÜÓʼĵÄÔ­Òò¡£
Sender/Recipient ·¢ÐźÍÊÕÐÅÈ˵ÄÓÊÏ䵨ַ¡£

mailstatsÓʼÄ״̬²éѯÃüÁ¿É²éѯsendmailÔËÐÐ×÷ÖÁ½ñÓʼþÊÕ·¢×ܼÆ×ÊÁÏ¡£
M £º
msgsfr£º·¢Ë͵ÄÓʼþÊýÁ¿¡£
bytes_from£ºÓʼþÈÝÁ¿
megsto£ºÊÕµ½ÓʼþµÄÊýÁ¿¡£
bytes_to£ºÍ¬ÉÏ
msgsrej£ºÓʼþdenyµÄ´ÎÊý¡£
msgsdis£ºÓʼþdiscardµÄ´ÎÊý¡£
Mailer £ºesmtp¶ÔÍâÓʼþ £¬local±¾µØÓʼþ ¡£

mailÓʼþÃüÁî
mail ²é¿´/var/spool/mail/Ŀ¼ÏÂ×ÔÒÑÓÊÏäÄÚÈÝ¡£ÒÔqÍ˳ö°Ñ¿´¹ýµÄÓʼþ±£´æÔÚ
~/mboxÖС£
mail test@example.com Ö±½Ó·¢Óʼþ¸øÈË¡£
mail -s 'title text' test@example.com < mail.txt °ÑÎĵµÖÐÄÚÈÝÓʼijöÈ¥¡£
mail -f ~/mbox ²é¿´homeĿ¼ÏÂÓÊÏäÄÚÈÝ¡£
ÓÃmail·¢¸½¼þÒ²ÊÇ¿ÉÐУ¬ÒªÓõ½uuencode and uudecodeÃüÁî½øÐбàÂë¡£
±àÂ룺uuencode [file] name example:uuencode hello hello>;hello.uue default input
is stdin;default output is stdout.
½âÂ룺uudecode [-o outfile] name example:uudecode hello.uue ¿ÉÒÔÓÃ-oÑ¡ÏîÊä³öÁíÍâÒ»¸ö
ÎļþÃû¡£
# uuencode ~/.bashrc bashrc | mail -s 'test uuencode' test@example.com

Îå¡¢ÆäËûÉèÖá£
ÒªÏë¸üºÃµÄʹÓÃsendmail£¬³£Óõ½µÄһЩÉèÖãº
1¡¢ÏÞÖÆ×î´óÓʼþ¡£
vi /etc/sendmail.cf
# maximum message size
O MaxMessageSize=5000000 (×¢£º5M)
2¡¢×î´óµÄȺ·¢ÊýÄ¿¡£
vi /etc/sendmail.cf
# maximum number of recipients per SMTP envelope
O MaxRecipientsPerMessage=20 £¨×¢£º20¸ö£©
3¡¢ÓòÃûÎļþ----local-host-name
¿ÉÒÔÓÃËûÀ´ÊµÏÖÐéÄâÓòÃû»ò¶àÓòÃûÖ§³Ö¡£
/etc/mail/local-host-name
v1mail.com
v2mail.com
.......
4¡¢mail±ðÃûÎļþ--aliases¡£
vi /etc/aliases
ϵͳÄÚ²¿±ðÃû£ºpeng:zpeng,hero,mmmn,yt pengÊÇÎÒµÄÓû§Ãû£¬ÆäËûµÄÊDZðÃû£¬ÓöººÅ¸ô¿ª¡£
ת·¢µ½ÆäËûµÄÓÊÏ䣺peng:zpeng@sina.com,yt.sohu.com
#newaliases --дµ½¿âÖÐ
5¡¢Óʼþ¿ØÖÆÎļþ--access
relay¡¢ok¡¢rejectºÍdiscard¡£relay¿ÉÒÔʵÏÖת·¢¡£okÊÇÓÃÀ´ÔÊÐíÓû§µÄÈÎÒâ·ÃÎÊ£¬Ëü»á¸²¸ÇÈÎºÎÆäËüÒѽ¨Á¢µÄ¼ì²é£¨Êµ¼ÊÉèÖÃÖУ¬×îºÃ±ðÉèÕâÏ³ý·ÇÄã¶Ô¸ÃÓû§ÊǾø¶ÔÐÅÈεģ©£»reject¿ÉÒÔʵÏÖ¶ÔÀ´·ÃµØÖ·µÄ¾Ü¾ø£¬Ëü¸ù±¾¾Í²»ÈÝÐí¸ÃµØÖ·ÓëÄãµÄÓʼþ·þÎñÆ÷½øÐÐÁ¬½ÓͨÐÅ£»discardµÄ×÷ÓÃÊÇÔÚ½ÓÊÕµ½´«ÊäµÄÓʼþÏûÏ¢ºó£¬ÍµÍµµØ°ÑËü¶ªÆúµô£¨ÔÚ·¢ËÍÕß¿´À´£¬ËûµÄÓʼþµÄÈ·ÊǽÓÊÕÁË£¬µ«Ëû²¢²»ÖªµÀ£¬·¢Ë͵ÄÄ¿µÄµØÖ·¸ù±¾²»¿ÉÄܽÓÊÕµ½ËûµÄÓʼþ£¬·þÎñÆ÷ÇÉÃîµØÆÛÆ­ÁËËû¡£
vi /etc/mail/access.

localhost.localdomain RELAY ---ÔÊÐí
localhost RELAY
127.0.0.1 RELAY
peng@sina.com ok
@sexgirl.net reject
211.77.22.45 discard

#makemap hash access.db < access --дÈë¿âÖÐ

6¡¢ÐéÄâÓû§Îļþ---virtusertable.
Õâ¸öÎļþ¿ÉÒÔmailÖØÃûÎÊÌâ¡£
ÀýÈ磺ÄãÓÐÁ½¸öÓòÃû£¬virt1.com and virt2.com,µ«ÊǶ¼ÓÐpengÕâ¸öÓû§£º
peng@virt1.com and peng@virt2.com,ÕâÊÇÁ½¸öÓû§¡£µ«¶ÔÓÚϵͳÓû§À´Ëµ£¬ËûÖ»ÈÏϵͳÓû§peng,Ö»ÄÜͨ¹ýһϸģº
vi /etc/mail/virtusertable
peng@virt2.com r010
ÕâÑù¾Í¿ÉÒÔÁË¡£ÔÚпªÒ»¸öÓû§r010,µ«ÊÇpeng@virt2.comÔÚ¿Í»§¶ËµÄpop3 and smtp serverµÄÓû§ÃûºÍ¿ÚÁîÒªÓÃr010µÄ¡£
#makemap hask virtusertable.db < virtusertable

# /usr/sbin/sendmail -d0.1 -bv root |grep SASL
NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS QUEUE SASL SCANF

ÎÒµÄÎÊÌâÒѾ­ÕÒµ½ÁËÊÇ/usr/lib/sasl/Sendmail.confµÄÎļþÃûÖеÄSûÓдóд£¬ÎÊÌâÒѾ­½â¾ö¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 4 ÌõÆÀÂÛ

  1. chris_cheng ÓÚ 2007-01-11 15:30:06·¢±í:

    ÓÖÒ»´Î³¤Á˼ûʶ~£¡:ha3nd

  2. mcpsx ÓÚ 2007-01-10 23:33:53·¢±í:

    :0L

  3. hongkeyin ÓÚ 2006-12-16 10:58:26·¢±í:

    ƼˮÏà·ê¶¼Êǰ®ºÃÖ®ÈË
    Ì쳤µØåIJ»·Á¹²ÉÌ´ó¼Æ
    ºÇºÇ :0L

  4. csbinghu ÓÚ 2006-11-11 13:07:12·¢±í:

    :0L