?? 6.html
字號:
Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFFonts();<br> System.out.println("Chinese Fonts: \n");<br> for (int i = 0; i < fonts.length; i ++)<br> {<br> if (fonts[i].canDisplayUpTo("\u4e00") > 0) // 注 3<br> {<br> System.out.println(fonts[i].getFontName());<br> }<br> }<p> 好了, 知道了系統中有沒有中文字體, 然后選擇一個就是了. 如果選擇了不能顯示中文的字體, 通常的情況是顯示方框.<br> 好了, Swing 的中文顯示介紹完了, 輸入和編輯中文就和顯示差不多, 選一個字體就可以了, 具體得看你而 Linux 的具體設置了, 這里就不多說了.<br> 從以上兩點來看, 其實最重要的還是字體的選擇. 我的網站上有 ScreenShot和測試程序, 歡迎來訪問. http://SuperMMX.dhs.org<p><br>注 1: 據 jdk1.2.2 的文檔, 并沒有這個屬性, 很奇怪, 但是確實可用.<br>注 2: jdk 1.2 以上自帶的字體支持 Unicode, 但是不支持 Unicode 漢字. 所以打出來的結果包含了 jdk 自帶的字體.<br>注 3: UNICODE 中, UNICODE 漢字從 \u3400 到 \u9FFF 中間, \uF900 到 \uFAFF也有一些, 但是 GB2312 和 Big5 的漢字和字符都是在 \u4E00 到 \u9FFF中間.<p>參考文獻:<br>jdk tools doc<br>一篇沒有作者名字, 也沒有出處的英文文章.<p><p><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I157" ID="I157"></A><center><b><font size=+2>sendmaild</font></b></center><br>最簡提示:<p> 主要的問題是如何配置sendmail.cf.<br> 如果你用的是redhat,執行:<p>cd /usr/lib/sendmail-cf/cf<br>m4 redhat.mc > sendmail.cf<br>cp sendmail.cf /etc/sendmail.cf<br>sendmail -bd(或者reboot)<p> 上面的方法配置之后服務器發信沒問題,而遠端機器卻不能發信,是因為缺省redhat.mc生成的sendmail.cf禁止了客戶服務,<br>這樣:找到下面一行(sendmail.cf):<p>R$* $#error $@ 5.7.1 $: "550 relay denied"<br>改成<br>R$- $@ ok<p> 就行了,不過當心有人用你的系統發垃圾郵件<p><p><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I735" ID="I735"></A><center><b><font size=+2>sendmail扮演的角色</font></b></center><br>1. sendmail扮演的角色<p> sendmail程序扮演著多種不同的角色,最主要的角色就是傳遞電子郵件。它監聽來自網絡的電子郵件,傳送電子郵件到另一臺機器,通過本地傳送,將本地信件傳給本地程序。它能夠在郵件中附加上文件,也能夠使用管道將郵件發給其它程序。它能夠維護一個郵件隊列,有序地將郵件發送出去,還可以理解接收者的郵件別名,將其發送到真正的目標用戶當中去。<p>1.1在文件系統中的角色<p> sendmail程序的角色(位置)在本地文件系統中,就象一個倒置的樹,如圖3-1。當sendmail運行時,首先讀取/etc/sendmail.cf配置文件。在這個配置文件中,能夠指出sendmail所需要的其它文件與目錄的位置。<p><br> 圖3-1 sendmail.cf的層次結構<p> 安全起見,在配置文件/etc/sendmail.cf中指定的文件、目錄名一般都使用絕對路徑,例如:使用/var/spool/mqueue,而不使用mqueue。在我們講解這些文件之前,首先運行如下命令以收集一個文件列表:<p>% grep = / /etc/sendmail.cf<p><br> 注:如果你使用的是V8.7以上版本的sendmail,則你需要查找的應該改為”/[^0-9].*/”.<p> 這個命令將會出現類似如下的結果:<p><br>O AliasFile=/etc/aliases<br>#O ErrorHeader=/etc/sendmail.oE<br>O HelpFile=/usr/lib/sendmail.hf<br>O QueueDirectory=/var/spool/mqueue<br>O StatusFile=/etc/sendmail.st<br>#O UserDatabaseSpec=/etc/userdb<br>#O ServiceSwitchFile=/etc/service.switch<br>#O HostsFile=/etc/hosts<br>#O SafeFileEnvironment=/arch<br>Mlocal,P=/bin/mail, F=lsDFMAw5:/|@rmn, S=10/30, R=20/40,<br>Mprog, P=/bin/sh, F=lsDFMoeu, S=10/30, R=20/40, D=$z:/,<p><p> 請注意,有些行是以字母O開始,有些行是以字母M開始,有些行是以#開始的。以字母O開始的行是配置選項。字母O后面緊跟著選項的名字。選項的值指出了sendmail使用的文件。例如,AliasFile定義了本地的aliases數據庫文件。以M開始的行則定義了分發代理。以#開始的行就是注釋。<p> 首先我們考察以O開始的選項行。然后再分析以M開始的分發代理選項。<p>1.1.1 aliases文件<p> aliasing就是將接收者的名字轉換另一個名字。一種情況下是將一些通用名字(如root、webmaster)轉換成真正的用戶名。另一種情況下是將一個名字轉換成多個名字的列表(如使用郵件列表)。<p> Aliases文件在sendmail.cf文件中的AliasFile選項中指定,例如:<p>O AliasFile=/etc/aliases<p><br> 以下是一個aliases文件的簡要實例:<p># Mandatory aliases.<br>postmaster: root<br>MAILER-DAEMON: postmaster<br># The five forms of aliases<br> xpres: ford,carter,bush<br> oldlist: :include: /usr/local/oldguys<br> nobody: /dev/null<br>ftphelp: |/usr/local/bin/sendhelp<p> 你的aliases文件可能更長、更復雜的,不過,以上這個示例也顯示了aliases所有可能的構成。<p> 以#開始的行,是注釋行??招斜缓雎圆挥?。第一行就是一個注釋行,它指出了2、3兩行是每一個aliases文件被必須強制擁有的。所有的別名格式都是一樣的,一個名字(別名)和一個要改為成的名字(原名)。別名在“:”號的左邊,原名在“:”號的右邊。名字是不區分大小寫。例如:POSTMASTER,Postmaster以及postmaster都是相同的。<p> 如果信封上列出的接收者名字是本地用戶的話,sendmail程序就會查找aliases文件。如果sendmail發現接收者名字如果與aliases文件中的“:”號左邊的名字相匹配,就將接收者名字替換為“:”號右邊的名字。例如:發給本地的postmaster的信,會被轉變成為發給root的信。<p> 在一個名字被替換后,會使用這個被替換后的名字繼續查找,直到沒有匹配的名字為止。如MAILER-DAEMON首先被轉變為postmatser,然后postmaster又被改被為root。由于沒有一個以root開始的別名項,所以轉換過程到此結束,信件最后被傳送到root的信箱中去。<p> 任何一個aliases文件必須有一個將postmaster轉變成實際用戶的別名項。因為當郵件出現問題時,總是會生成一個錯誤報告的信,發給postmaster。所以最好將這樣的信發給郵件的系統管理員。<p> 當電子郵件被退回時,將會發給MAILER-DAEMON。所以這個別名是必須的。沒有這個設置的話,退回的信將會在發件人與收件人之間不斷來回傳送。<p> Aliases文件中有五種類型:<p>John_Adams: adamj<br>xpres: ford,carter,reagan,bush<br>oldlist: :include: /usr/local/oldguys<br>nobody: /dev/null<br>ftphelp: |/usr/local/bin/sendhelp<p> 首先我們看一下第一行,這一行的格式與我們前面的例子相似,這一句讓sendmail程序將發給John_Adams的信都給真實用戶adamj。<p> xpres那一行則象大家演示了如何將一個名字擴展到一組名字,發給xpres的信件將擴展為ford、carter、reagan、bush,并使用這些名字進行aliases處理,直到無匹配為止。然后將信件的副本分發給每一個。<p> 而oldlist這行,則象大家演示了如何從一個文件中讀取一組名字,本例中就是讓sendmail將發給oldlist的信息擴展為在/usr/local/oldguys文件里的用戶列表。請記住它的格式,在文件絕對路徑名前需加上“:include:”。<p> nobody這一行,象大家演示了如何用文件名代替別名。發到這個郵件中的內容將添加到所指定的文件后面去。這里指定的是/dev/null。這樣就是指發到nobody的信件將會被簡單地丟棄。<p> 最后一行,ftphelp那一行象大家演示了如何用程序名代替別名。字符“|”使sendmail將這個郵件信息通過管道發給所指定的程序。<p> aliases文件可能變得非常復雜。它能夠用于解決許多特殊的問題。aliases文件的更多的內容將在第24章:別名中詳述。<p>1.1.2 郵件隊列目錄<p> 在很多情況下,都可能使一個電子郵件臨時無法發送,例如:遠程主機已經down了,或臨時出現了磁盤錯誤。為了確保郵件最終能夠發送成功,sendmail將會把它們存到郵件隊列目錄中,直到發送成功為止。<p> 配置文件中的選項QueueDirectory用于指定sendmail的郵件隊列目錄:<p>O QueueDirectory=/var/spool/mqueue<p><br> 這里指出的目錄名必須是全路徑名。<p> 如果你用足夠的權限,看一看隊列目錄。如果沒有郵件等待發送的話,它們可能是空的。如果它們不是空的,那么可能包括形如以下的文件:<p>dfQAA07038 dfMAA08000 qfQAA07038 qfMAA08000<p><br> 當一個郵件信息進入了郵件隊列,將分成兩個部分,每一個部分都保存在一個文件中。頭信息存在一個文件名是以qf開頭的文件中。郵件內容部分則存在一個文件名是以df開頭的文件中。<p> 上例中,有兩個郵件在郵件隊列中。其中一個被標識為QAA07038,而另一個被標識為MAA08000。<p> 隊列文件的格式與處理方法,我們將在第23章:郵件隊列中詳細說明。<p>1.2本地分發的角色<p> sendmail的另外一個角色則是分發電子郵件信息給本地用戶。一個本地用戶在本地系統上有一個郵箱。分發本地郵件,就是將其附加到這個用戶的郵箱中。<p> 通常,sendmail不是直接將郵件信息直接放到文件中去。在上一節中,我們看到,只有指定sendmail程序將郵件附加到一個文件中時,才這樣做的。但這是一個例外,不是規則,sendmail調用其他程序執行分發。被調用的程序叫做分發代理。<p> 在你的sendmail.cf文件中,有兩行用來定義本地分發代理,其中一個用于在本地系統中分發郵件:<p>Mlocal,P=/bin/mail, F=lsDFMAw5:/|@rm, s=10, R=20/40,<br>Mprog,P=/bin/sh, F=lsDFMeu, S=10, R=20/40, D=$z:/,<p> 程序/bin/mail用來將郵件附加到用戶的郵箱中。程序/bin/sh用來運行其它程序來處理分發。<p>1.2.1 分發到郵箱<p> 配置文件中,以Mlocal開始的行定義了郵件如何附加到用戶的郵箱文件中去。通常是使用/bin/mail程序,也可以使用deliver或mail.local程序。<p> 在UNIX系統中,用戶的郵箱是一個單獨文件,其中個郵件信息。通常UNIX系統約定(但不是唯一的可能)每一個在郵箱文件中郵件信息以一個五字節長的“From ”(4個字母、一個空格)開始,并以一個空行結束。<p> Sendmail程序并不知道也不關心用戶的郵箱文件是什么樣的。而只關心將郵件添加到郵箱文件中的程序名稱。例如:/bin/mail。以M開頭的配置行定義了分發代理,詳細的介紹可以參看第6章:Mail中樞和分發代理,以及第30章:分發代理。<p>1.2.2 借助程序分發<p> 在1.1小節中的aliases文件示例中的ftphelp行,是以字符“|”開始的程序名作為Mail的目的地:<p>ftphelp: |/usr/local/bin/sendhelp<p><br> 在此情況下,發送到ftphelp中的mail,經過別名轉換到|/usr/local/bin/sendhelp中。以字符“|”開始的目的地地址告訴sendmail啟動這個程序,而非添加到一個文件中去。這主要是實現使用一個郵件程序對接收的郵件作一些有用的處理。<p> Sendmail程序不直接運行郵件的分發程序。而是運行一個shell,并告訴shell運行這個程序。這個shell的名字在配置文件中以Mprog開始的行中定義:<p>Mprog,P=/bin/sh, F=lsDFMeu, S=10, R=20/40, D=$z:/,<p><br> 在這個例子是,指定的shell是/bin/sh。也可以使用/bin/ksh或smrsb。<p>1.3網絡傳輸角色<p> sendmail還有一個角色就是負責將郵件傳送到另一臺機器。當sendmail確定接收者不在本地系統中時,郵件將傳送出去。下列是典型的配置文件中定義負責將郵件傳送到其它機器的分發代理:<p><br>MsmtpP=[IPC], F=mDFMuX, S=11/31, R=21, E=<br>, L=990,<br>MuucpP=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=10000000,<p><p> 而在實際的配置文件中可能會有一些不同。上面例子中,smtp可以寫為ether或ddn或其它的一些東西。而uucp可以寫為suucp或uucp-dom。一個重要的知識點就是有一些分發代理處理本地分發,另外一些處理跨越網絡的分發。<p>1.1.1 TCP/IP<p> sendmail程序內在擁有在同一種網絡中傳輸郵件的能力,那就是使用TCP/IP;下列的行就是用來指示sendmail去處理:<p><br>MsmtpP=[IPC], F=mDFMux, S=11/31, R=21, E=<br>, L=990<p> 其中[IPC]可以寫作[TCP],它們是完全等價的。<p> 當sendmail程序在TCP/IP網絡中傳輸mail時,首先發送“信封”上的發信人主機名到另一個站點。如果這個站點認可這個發信人的主機名是合法的,本地的sendmail程序將發送“信封”上的收信人列表。這個站點針對每一個收件人確定接受或拒絕。如果一些收件人被接受,則本地的sendmail程序發送出郵件信息(信頭和信體)。<p>1.1.2 UUCP<p> 在配置文件中設置sendmail如何通過UUCP傳輸郵件的行如下所示:<p>MuucpP=/usr/bin/uux, F=DFMhuUd, S=12, R=22/42, M=10000000,<p> 這行告訴sendmail程序使用/bin/uux來通過UUCP網絡傳輸郵件。<p>1.1.3 其它協議<p> sendmail程序還可通過其它網絡協議傳輸mail。你可以從我們前面做過grep操作的輸出結果中發現它們,它們看上去象:<p>Mfax, P=/usr/local/lib/fax/mailfax, F=DFMhu, S=14, R=24, M=100000,<br>Mmail11, P=/usr/etc/maill11, F=nsFx, S=15, R=25, A=mail11 $g $x $h $u<br>Mmac,P=/usr/bin/macmail, F=CDFMmpsu, R=16, S=16, A=macmail –t $u<p> Mfax行定義了使用sendmail發送FAX的途徑。FAX通過電話線傳輸文件的圖形影象。在這個配置中,程序/usr/lib/fax/mailfax,將一個郵件文件的圖形影象FAX出去。<p> Mmail11行定義了使用mail11程序在DEC網絡上傳輸郵件,一般應用于DEC系統。<p> Mmac行定義了在Macintosh電腦系統的AppleTalk網絡上傳輸郵件。<p> 在所有的這些例子中,sendmail通過專用的服務程序在網絡上發送電子郵件。記住,sendmail本身只能直接在基于TCP/IP的網絡上工作。<p>1.4 Daemon角色<p> 就象sendmail能夠在基于TCP/IP的網絡上傳輸電子郵件一樣,它也能夠接收來自于網絡的電子郵件。為了實現這個,就必須運行在daemon(守候進程)模式。Daemon是一個運行在后臺,不受終端約束的程序。<p> 作為一個daemon,sendmail通常在系統啟動時就運行。當一個電子郵件發送到你的機器時,遠程機器將與運行在你機器上的sendmail daemon“商談”。<p> 想觀察你的系統如何將sendmail運行在daemon模式下,你可執行以下任何一條命令:<p>% grep sendmail /etc/rc* (BSD系統)<br>% grep sendmail /etc/init.d/* (SysV系統)<br>% grep sendmail /etc/*rc (HP-UX系統)<p> 一個典型的輸出是:<p>/etc/rc.local:if [-f /usr/lib/sendmail –a –f /etc/sendmail.cf]; then<br>/etc/rc.local: /usr/lib/sendmail –bd –q1h; echo –n ‘ sendmail’<p> 上面的第二行是sendmail在系統啟動時運行的命令。<p>/usr/lib/sendmail –bd –q1h<p> 命令選項-bd是使sendmail運行在daemon模式下。命令選項-q1h是讓sendmail每小時喚醒一次,處理隊列。<center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I736" ID="I736"></A><center><b><font size=+2>如何運行sendmail</font></b></center><br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -