linux系统管理员讲义(5)


Google

手�RELAY ��

想要知道自己架�的�件主�是否�定正�,�有Relay 的��,可以使用telnet 工具作��,先以help 查�可以使用的指令:

#  telnet  127.0.0.1  25TkfLinux联盟
Trying 127.0.0.1...TkfLinux联盟
Connected to 127.0.0.1.TkfLinux联盟
Escape character is '^]'.TkfLinux联盟
220 ESMTP
//sendmail 版本�息已�被�藏TkfLinux联盟
helpTkfLinux联盟
214-2.0.0 This is sendmail version 8.12.8
//但是打help �是看得到版本�息,�����修改/etc/mail/helpfile �解�TkfLinux联盟
214-2.0.0 Topics:TkfLinux联盟
214-2.0.0 HELO  EHLO  MAIL  RCPT  DATATkfLinux联盟
214-2.0.0 RSET  NOOP  QUIT  HELP  VRFYTkfLinux联盟
214-2.0.0 EXPN  VERB  ETRN  DSN  AUTHTkfLinux联盟
214-2.0.0 STARTTLSTkfLinux联盟
214-2.0.0 For more info use "HELP <topic>".TkfLinux联盟
214-2.0.0 To report bugs in the implementation send email toTkfLinux联盟
214-2.0.0 sendmail-bugs@sendmail.org.TkfLinux联盟
214-2.0.0 For local information send email to Postmaster at your site.TkfLinux联盟
214 2.0.0 End of HELP infoTkfLinux联盟
helo test.com
//��假冒自己身份�test.com TkfLinux联盟
250 mail.spps.tp.edu.tw Hello localhost.localdomain [127.0.0.1],
//��一定��示正�的��位置TkfLinux联盟
pleased to mee
t you. TkfLinux联盟
mail from: spam@test.com
//假�寄信人是spam@test.com TkfLinux联盟
250 2.1.0 spam@test.com... Sender okTkfLinux联盟
rcpt to: spam@test.com
//假�收信人也是spam@test.com TkfLinux联盟
250 2.1.5 spam@test.com... Recipient o
k //居然被接受了,其�因�是�127.0.0.1 ��,所以���TkfLinux联盟
quitTkfLinux联盟
221 2.0.0 mail.spps.tp.edu.tw closing connectionTkfLinux联盟
Connection closed by foreign host.

$  telnet  192.57.1.7  25 //�次��台主��上���TkfLinux联盟
Trying 192.57.1.7...TkfLinux联盟
Connected to 192.57.1.7.TkfLinux联盟
Escape character is '^]'.TkfLinux联盟
220 ESMTPTkfLinux联盟
helo test.com
// 假冒自己的身分TkfLinux联盟
250 mail.spps.tp.edu.tw Hello stu.spps.tp.edu.tw [192.57.1.6], pleased to mee
t you. //�示正�的��位置TkfLinux联盟
mail from: spam@test.com
//假�寄信人是spam@test.com TkfLinux联盟
250 2.1.0 spam@test.com... Sender okTkfLinux联盟
rcpt to: spam@test.com
//假�收信人是spam@test.com TkfLinux联盟
550 5.7.1 spam@test.com... Relaying denied. Proper authentication required.
//果然被要求要先登入TkfLinux联盟
rcpt to: shane@mail.spps.tp.edu.tw
//改寄�本���shane@mail.spps.tp.edu.tw TkfLinux联盟
250 2.1.5 shane@mail.spps.tp.edu.tw... Recipient ok
//被接受了,事�上��收信是不��RELAY ,�然前提�件是寄信人spam@test.com access.db 中不可以被REJECT TkfLinux联盟
data
//�始�入信件�容TkfLinux联盟
354 Enter mail, end with "." on a line by itselfTkfLinux联盟
From: 你抓不到我@test.com //透�����, 可以取代MAIL 指令所�定的�件信箱地址,以避免被追�TkfLinux联盟
To: 你抓不到我@test.com //透�����, 可以取代RCPT 指令所�定的�件信箱地址,以避免被追�TkfLinux联盟
S
ubject: helloTkfLinux联盟
TkfLinux联盟
hi, how are you?TkfLinux联盟
.
//�束�入,必�另起一行然後�入英文句�TkfLinux联盟
250 2.0.0 h284YtkF025941 Message accepted for delivery
//信件被接受��行分信�理TkfLinux联盟
quitTkfLinux联盟
221 2.0.0 mail.spps.tp.edu.tw closing connectionTkfLinux联盟
Connection closed by foreign host.

$  telnet  192.57.1.7  25TkfLinux联盟
Trying 192.57.1.7...TkfLinux联盟
Connected to 192.57.1.7.TkfLinux联盟
Escape character is '^]'.TkfLinux联盟
220 ESMTPTkfLinux联盟
auth plain
//��以�文字密�登入TkfLinux联盟
504 5.3.3 AUTH mechanism plain not available //�����制已�被移除TkfLinux联盟
auth login
//��以POP3 方式登入TkfLinux联盟
334 VXNlcm5hbWU6
//提示�入username ,之所以看不懂是因�被�成base64 TkfLinux联盟
shane //直接�入��是�的 ,�先使用底下指令找出 base64 字串:TkfLinux联盟
perl -MMIME::Base64 -e 'print encode_base64("要�密的字串");'
TkfLinux联盟
334 UGFzc3dvcmQ6
//提示�入password TkfLinux联盟
123456 //���相同,要先�成 base64TkfLinux联盟
535 5.7.0 authentication failed
//由於base64 ��事�上�未加密,最好�是不要用TkfLinux联盟
auth digest-md5
//��其他���制存不存在TkfLinux联盟
504 5.3.3 AUTH mechanism digest-md5 not availableTkfLinux联盟
starttls
// ��TLS/SSL 安全���有�有�用TkfLinux联盟
454 4.3.3 TLS not available after startTkfLinux联盟
help dsn
// 查���指令TkfLinux联盟
214-2.0.0 MAIL FROM: <sender> [ RET={ FULL | HDRS} ] [ ENVID=<envid> ]TkfLinux联盟
214-2.0.0 RCPT TO: <recipient> [ NOTIFY={NEVER,SUCCESS,FAILURE,DELAY} ]TkfLinux联盟
214-2.0.0 [ ORCPT=<recipient> ]TkfLinux联盟
214-2.0.0 SMTP Delivery Status Notifications.TkfLinux联盟
214-2.0.0 Descriptions:TkfLinux联盟
214-2.0.0 RET Return either the full message or only headers.TkfLinux联盟
214-2.0.0 ENVID Sender's "envelope identifier" for tracking.TkfLinux联盟
214-2.0.0 NOTIFY When to send a DSN. Multiple options are OK, comma-TkfLinux联盟
214-2.0.0 delimited. NEVER must appear by itself.TkfLinux联盟
214-2.0.0 ORCPT Original recipient.TkfLinux联盟
214 2.0.0 End of HELP infoTkfLinux联盟
ehlo test.com //EHLO 指令打招呼,就可以使用��指令,事�上��指令有很多安全漏洞TkfLinux联盟
250 mail.spps.tp.edu.tw Hello stu.spps.tp.edu.tw [192.57.1.6], pleased to mee
t you.TkfLinux联盟
mail from: spam@mail.spps.tp.edu.tw
// ��假�自己是本�使用者TkfLinux联盟
250 2.1.0 spam@mail.spps.tp.edu.tw... Sender okTkfLinux联盟
rcpt to: hp2013@ms8.hinet.net
// 能不能寄垃圾信到hinet TkfLinux联盟
550 5.7.1 hp2013@ms8.hinet.net... Relaying denied. Proper authentication requir
ed.// �果被拒�了,跟上一次的��不同的是,�在是要寄信出去所以�然��RELAY ,�且�才��登入也�成功TkfLinux联盟
quitTkfLinux联盟
221 2.0.0 mail.spps.tp.edu.tw closing connectionTkfLinux联盟
Connection closed by foreign host.

procmail �信程式

procmail 是一支功能�大用途�泛的�信程式,�sendmail 收到 �本�的信件�行分信�,�先�理aliases �名��,�理完aliases procmail 就�被呼叫�行,procmail ��根�比����行信件��(Header)或信件�文(Body)的特徵比�,比���是�用正�表�式的形式,若比�成功��行相��的�理,包括:�信�另一���、�存到�案、��另一支程式�理......等等,其�未符合�件之信件����行比�,直到所有比���比�完��止,最後比�未成功的信件,��交由sendmail �建的MDA 分信�收信人。系���的比������放於/etc/procmailrc �案�,或者是/etc/procmailrcs �料��,�些��在收到每一封信�都�被�入比�,接著procmail 才�去�取使用者自行建立在自己家目��的.procmailrc �案,以便���人的信件�行比�,�然本文�不��一般使用者�用procmail 的�例,也不建�教使用者去利用��功能,�者建��信工作��由系管��一���施。

底下介����例��明procmail 的用法,更多的�例可以�考 http://www.iki.fi/era/procmail/links.html �站的�明。procmailrc 的�法格式如下:

:0<旗�>:<�定��名>TkfLinux联盟
* <特殊比�字元> <正�表示式-1>TkfLinux联盟
* <特殊比�字元> <正�表示式-2>TkfLinux联盟
* <特殊比�字元> <正�表示式-N>TkfLinux联盟
<特殊�理字元><�理�的>

在�明�法涵�之前,先�看底下��例子,以便了解�用的方式�效果:

:0:TkfLinux联盟
all_mail_stored.here

上面���例��建立�定�,建立�定�可以保�信件�入到all_mail_stored.here 的同�,不�有其它程序存取此�案,由於�例中未指定�定��名,所以��名�由procmail 自行命名,另外�例中省略比�演算,也就是�所有新收到的�件都符合比��件(��件),都��行�一步的�理,�理方式是�信�存於all_mail_stored.here �案中,�理�的信件�不�分信�收信人。事�上���例一旦�行,所有的信件都�被�存於�一�案中,�有人�再收到信件。

:0cTkfLinux联盟
! spy@some.where

�前一��例不同的是,���例不�建立�定�,同�由於使用旗�c ,因此比�成功後�理的是��信,���例��此伺服器所有收到的信件,�寄�spy@some.where 信箱,但收信人仍然可以正常收到信件,��法得知信件被�寄到其它地方以便�查�容。

:0TkfLinux联盟
* ^From: spammer@some.whereTkfLinux联盟
/dev/null

���例不�建立�定�,�例中有比�演算式,�比�寄信人是否�spammer@some.where ,若是��行後��理,�理方式是�信�到黑洞�,�信���底消失!

底下逐一�明�法��中每���的意�:

旗��定比�生效的方式
A�行and 比�,�上一次比�(�有A a 旗�的那一次)比�成功的情形下才�行此次比�
a同上,但�先��前一次的�理�作是否�理成功,若是才�行此次比�
B比�信件�文是否符合�件
b�行�理�作�,例如:�寄�某人或�存到�案,是否要包含信件�文,��要包含
c在�理比�之前,是否先��一份,�比���的那一份,若比�成功�,���理��信,原始信件仍����行後�比�,或比�完�後由MDA 分信�收信人
D指定比��要�分大小�,��值是不�分
E�行else 比�,�上一次比�(�有E e 旗�的那一次)比�不成功的情形下才�行此次比�
e同上,但�先��前一次的�理�作是否�理失�,若是才�行此次比�
f指定�| 符���管道而非OR
H比�信件��是否符合�件
h�行�理�作�,例如:�寄�某人或�存到�案,是否要包含信件��,��要包含
w要求procmail �行下一�比�之前,先等待�理�作�理完�,通常是用於呼叫外��理程式的情形下,�是�了避免�外�程式未�行完��被反覆��,造成IO �突
特殊比�字元�用於正�表�式�法�理的比��合
!表示要做反向比�,比�不符合�件的信件
<比�信件大小是否小於指定Bytes
>比�信件大小是否大於指定Bytes
正�表示法�自行�考regular expression �明文件
特殊�理字元�定如何�行信件的�理,如果省略此字元,意思是要�存到一��案�
!�寄�某�指定的信箱
$�寄�某��先�定好的��其所指定的信箱
|�交�其他程式�理(任何可�行的程式,例如:shell scriptperl、二�位�案......等等)
{}�行巢��理,�信件��被保留����行後�比�,��用法可�考底下HTML 剖析�例的�容
�理�的�名、信箱或外�程式的名�

formail �件�生器

��工具是用�重新改�信件��,或是用��生信件�文,procmail �合formail 就可以用�寄�警告信、通知信或是用���自�回信�制,由於�用方式稍嫌��,在此�程中不介�,�有�趣的��自行研究。

��病毒信�例

早期利用病毒信的特徵,可以��一些��的病毒,�著病毒不�的衍生�化,病毒信已��有一定的特徵可供比�,��候就只能透�附加�案的延伸�名�判��附加�案是否可以�行,如果可以�行就�有�播病毒的危�性,一律�它��,��的�案包含:wshbatexepif......等,但曾�何��著微�MIME ��的漏洞出�後,有�多可�行�化身��形�以躲避防毒��的��,而此��案��被微�的MIME 剖析器���行,�致病毒��。除此之外,更多的病毒�案�藏在HTML ��中,在�端伺�而�,等待使用者���件�自�下��行,��的病毒需要能剖析HTML �法的�信程式才能��,幸�的是有�公益��已�利用procmail 的�制�出可以剖析HTML 的�信演算法,推�大家安�使用,�站台�址� http://www.impsec.org/ ,目前最新的版本�1.318 �按�� procmail-sanitizer.tar.gz 下�。(下�石牌�小 PROCMAILRC

�用procmail 日�

�在/etc/procmailrc ��加入

LOGFILE="/var/log/procmail"

接著自己用touch 指令建立��案,��就��用日�功能,�於除�很有�助!

�名��寄群�

sendmail �查信件的收信人�位,���收信人的�域名��本��域�就��始�行分信,所�本��域指的就是定�在/etc/mail/local-host-names 中的�域名�(�版本使用sendmail.cw ),分信之前�先�查aliases �名�,看看是否有定���信箱,所���信箱就是指不是�使用者使用的信箱,�些信箱多半是有特殊用途,例如:系�管理用的、�寄群�用的......等等。也有人把aliases �名�拿�作使用者全名的��,例如:Shane.Lee ��成shane ,�然�也是一��用的方式,但按照sendmail ��的原意,��是使用genericstable 去做�件事比�正�,�者不同的地方在於:genericstable ruleset 2 �行收信人�位改��就直接�理了,不�等到分信�才�理,而且按照aliases 的��必�要能�入include 、呼叫�行script ,�且允�使用���名,�都�降低�理效能,如果只是��要作全名��使用aliases 比�不划算!

�安�sendmail �系��自��我��生aliases �名�,同��把系�上的服������root ,�是因�服���是��用程式使用的,��用程式�行�程中遇到某些突����,或�路上的其他管理人�需要����用程式的管理人�,有�候��信��些��,透�aliases �名�的作用,�些信件就�分到root 的�人信箱以免�人�理。但在���境中,�了避免root 密�在�路上��遭到�客�取,不管是透�outlook express 或是透�web 介面,我�都不�去收取root 的信件,而��在aliases �名�中�root 的信件分���管理��器的使用者,而且�了避免�客查出�是真正的管理�,���案的�限���成600 。���名�的�容��如下:

#TkfLinux联盟
# Aliases in this file will NOT be expanded in the header fromTkfLinux联盟
# Mail, but WILL be visible over networks or from /bin/mail.TkfLinux联盟
#TkfLinux联盟
# >>>>>>>>>> The program "newaliases" must be run afterTkfLinux联盟
# >> NOTE >> this file is updated for any changes toTkfLinux联盟
# >>>>>>>>>> show through to sendmail.TkfLinux联盟
#TkfLinux联盟
# Basic system aliases -- these MUST be present.TkfLinux联盟
mailer-daemon: postmasterTkfLinux联盟
postmaster: rootTkfLinux联盟
TkfLinux联盟
# General redirections for pseudo accounts.TkfLinux联盟
bin: root TkfLinux联盟
daemon: root TkfLinux联盟
============中�省略===================TkfLinux联盟
TkfLinux联盟
# trap decode to catch security attacksTkfLinux联盟
decode: root TkfLinux联盟
TkfLinux联盟
# Person who should get root's mailTkfLinux联盟
#root: marc <==�去掉Remark �改成自己的��

aliases 除了用����信箱���真�的��外,�可以�信件�存在�份�案�,��做的目的是希望信件被收走後,能留一份在伺服器上�查,例如我�可以把上例解��的那一行改�:

root: shane,/var/log/backup-mail

除此之外,aliases 也可以用��寄信件,例如下面的�定��信件�寄出去,以便�定shane 一定收得到:

root: shane,shane@ms8.hinet.net,shane@tmtc.edu.tw,shane@tp.edu.tw

�要�寄的信箱很多�,全部�成一行�真是困�,譬如想寄同一封信�全校所有老�,但不想一�一��入收信人地址,透�aliases 的�助,我�只需要建立一�teachers ��信箱,接著��一�空的�文字�,把全校老�的信箱地址打�去,一�地址一行,最後得留一行空白行。�案做好後,我�就可以��名�定改成:

teachers: ":include:/etc/mail/all_teachers.txt"

利用��方式,想同�寄信�一群人再容易不�了。但是,��寄群�很多而且成�相互重��,想要���寄清�的正�性就�很痛苦,好比除了全校教�外,我�另外�有各�年教�、科任教�、行政人�、主任等多�清�,�期末老�退休或�期初新�同仁加入,��多清�要同��查修改不能�漏,�工作可累了!�好aliases 提供了���照的功能,�我�可以�清�分批建立,�以�照方式建立�集,工作就��多了,例如:

headship: lee (校�) TkfLinux联盟
director: suelan,wang,............(主任)TkfLinux联盟
manager: maggy,young,.......... (��)TkfLinux联盟
grade1: jack,mary,helen,........ (一年�老�)TkfLinux联盟
grade2: vicky,johnny,,,,,,,...... (二年�老�)TkfLinux联盟
..........................................................(省略)TkfLinux联盟
course:              sean,marc,.................(科任)TkfLinux联盟
administer: headship,director,manager (行政人�)TkfLinux联盟
teachers: administer,grade1,grade2,grade3,grade4,grade5,grade6,course (全校老�)

在更��的�用中,aliases �可以�合外�的程式提供更��的服�,例如:�件��、自�回信系�(auto reply)、��群�(mailing list......等。例如:

check: "| perl /usr/libexec/subscribe.cgi"

如果您想建立��群�但不想花精神��它,建�您安�smart list ,��套件�然�春但是非常�易好用,它包含:信件��、取消��、��文件索引�分、查���清���容、自�清除�送有��之��者......等等。如果您想�使用者都能建立自己的��群�,majordomo 是第一��,����不但使用者�多,相���分析工具也已���得很完善,�些套件在rpm 安���自�修改aliases ��,需要手�修改的情�不多,因此不在此��。

�定好aliases 之後,必�以newaliases 指令�����案以利sendmail �取�用,由於aliases 是�用��,因此�不需要重新��sendmail 伺服器,它�立即生效。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
免责声明:
1、本文系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
2、如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容