*************************************************
******Download Postfix
*************************************************
mkdir postfix
cd postfix
wget ftp://ftp4.tnc.edu.tw/pub1/Postfix/official/postfix-2.7.0.tar.gz
wget ftp://ftp4.tnc.edu.tw/pub1/Postfix/official/postfix-2.7.0.tar.gz.sig
wget ftp://ftp4.tnc.edu.tw/pub1/Postfix/wietse.pgp
gpg --list-keys
echo $?
gpg --import wietse.pgp
gpg --list-keys
gpg --verify postfix-2.7.0.tar.gz.sig postfix-2.7.0.tar.gz
tar -xzvf postfix-2.7.0.tar.gz
##確認是否有安裝mail相關軟體
ps -ax | grep -i mail
##確認tcp 25是否已被使用
netstat -ntlp | grep 25
##查詢是否已安裝snedmail等郵件軟體
rpm -qa | grep sendmail
rpm -qa | grep postfix
##移除sendmail範例
rpm -e sendmail-8.13.8-2.el5
*************************************************
******Indentify Pre-Requisites
*************************************************
##Postfix 官方文件
./postfix-2.7.0/html/index.html
##新增postfix 帳號群組
groupadd postfix
useradd -g postfix -s /bin/false postfix
groupadd postdrop
*************************************************
******Compile & install Postfix
*************************************************
yum install gcc,db4-devel
make
make install
*************************************************
******Post-Installation Chores
*************************************************
##設定 /etc/postfix/main.cf
myhostname =
mydomain =
myorigin =
mydestination =
##啟動postfix
postfix start
##檢查postfix
ps -ax | grep master
netstat -ntlp | grep 25
##設定 /etc/postfix/main.cf
##在 /etc/postfix 目錄下存放的便是 Postfix 的相關設定檔,其中最重要的主要設定檔即為main.cf。在啟動 Postfix 之前您必須正確的設定好main.cf 檔,如此 Postfix 才能正常運作。底下將main.cf 檔中的各個重要的設定做一簡短說明,請依照您系統環境做適當的調整:
##myhostname:
##它是用來設定您系統的hostname,請注意,您所指定的值必須是完整的主機名稱。
##例:myhostname =zhqmail.scut.edu.cn
##mydomain:
##該參數則是設定您系統的網域名稱,預設Postfix 會將 myhostname 的設定值刪除最前面"."的剖份,剩下來的便是網域名稱。您也可以自行指定網域名稱。
##例:mydomain = zhqmail.scut.edu.cn
##myorigin:
##此參數是指定發信人的網域,預設Postfix 會將 myhostname 做為默認值,也就是說當收信人收到由此主機所發出的信時,其顯示發信人的格式為"[email]poster@keanu.no-ip.com[/email]",而如果您將 myorigin 設為 mydomain 時,那麼其顯示發信人的格式為 "[email]poster@no-ip.com[/email]"。
##例:myorigin = $myhostname
##mydestination:
##此參數是設定系統要接收的郵件地址有哪些,預設Postfix 只會接收 myhostname 和 localhost.$mydomain 地址的郵件。您可以使用","逗號來分隔多個參數值。
##例:mydestination = $myhostname, localhost.$mydomain, $mydomain
##mynetworks:
##此參數是設定准許 relay 的網域地址,請指定您所信任的網絡地址可以透過此台主機 relay 信件。預設 Postfix 信任系統所在網域的客戶端都可進行relay。您可以使用","分隔多個參數值。
##例:mynetworks = 192.168.71.0/24, 127.0.0.0/8,202.112.18.0/24
##inet_interfaces:
##設定 Postfix 要監聽的網絡地址,預設 Postfix 會監聽所有的網絡地址即 all 。如果您的系統為使用虛擬 ip 運作時,那麼您必須指定監聽的網絡地址。
##例:inet_interfaces = all
##alias_maps, alias_database:
##用來指定 aliases 文件的位置與其檔案格式,預設 Postfix 設定為 "hash:/etc/aliases"。
##例:alias_maps = hash:/etc/aliases
## alias_database = hash:/etc/aliases
*************************************************
******Local Mail
*************************************************
##檢查postfix設定
[root@mail99 ~]# postconf | less
2bounce_notice_recipient = postmaster
access_map_defer_code = 450
..
..
virtual_transport = virtual
virtual_uid_maps =
##/etc/aliases.db更新
[root@mail99 ~]# newaliases
or
[root@mail99 ~]# postalias /etc/aliases
##驗證/etc/aliases.db更新
[root@mail99 ~]# ls -l /etc/aliases.db
-rw-r--r-- 1 root root 12288 Mar 3 11:24 /etc/aliases.db
##檢查sendmail
[root@mail99 ~]# which sendmail
/usr/sbin/sendmail
[root@mail99 ~]# ls -l /usr/sbin/sendmail
-rwxr-xr-x 1 root root 576414 Mar 2 11:33 /usr/sbin/sendmail
##發送測試信 (Ctrl+D<發送>, Ctrl+C<中斷>)
[root@mail99 ~]# sendmail -v mail99
test postfix
Mail Delivery Status Report will be mailed to <root>.
##檢查mail queue
[root@mail99 ~]# mailq
##查詢mail log的路徑位置
[root@mail99 ~]# grep mail /etc/syslog.conf
# Log anything (except mail) of level info or higher.
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# Log all the mail messages in one place.
mail.* -/var/log/maillog
##查看maillog
[root@mail99 ~]# ls -l /var/log/maillog
-rw------- 1 root root 21288 Mar 3 11:16 /var/log/maillog
[root@mail99 ~]# less /var/log/maillog
Nov 19 18:06:16 localhost sendmail[1363]: alias database /etc/aliases rebuilt by root
Nov 19 18:06:16 localhost sendmail[1363]: /etc/aliases: 76 aliases, longest 10 bytes, 765 bytes total
...
...
##查看mail box
[root@mail99 mail]# ls -l /var/spool/mail
total 36
-rw-rw---- 1 postfix mail 0 Mar 1 18:41 postfix
-rw------- 1 root mail 21432 Mar 3 11:16 root
-rw-rw---- 1 rpc mail 0 Nov 19 18:02 rpc
##可使用mutt查看信箱
[root@mail99 mail]# mutt
*************************************************
******DNS - Configuration
*************************************************
##建立 A MX 等紀錄
-------------------------------------------------
##使用dig查詢dns mx紀錄
[root@mail99 ~]# dig startravel.com.tw mx
; <<>> DiG 9.3.4-P1 <<>> startravel.com.tw mx
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2434
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2
;; QUESTION SECTION:
;startravel.com.tw. IN MX
;; ANSWER SECTION:
startravel.com.tw. 3600 IN MX 10 postfix.startravel.com.tw.
startravel.com.tw. 3600 IN MX 20 mailbox.startravel.com.tw.
;; ADDITIONAL SECTION:
postfix.startravel.com.tw. 3600 IN A 10.5.1.10
mailbox.startravel.com.tw. 3600 IN A 10.2.2.100
;; Query time: 6 msec
;; SERVER: 10.2.2.11#53(10.2.2.11)
;; WHEN: Wed Mar 3 13:52:10 2010
;; MSG SIZE rcvd: 115
-------------------------------------------------
*************************************************
******Aliases - Intro
*************************************************
##建立測試帳號
[root@mail99 postfix]# useradd -s /bin/false account1
[root@mail99 postfix]# useradd -s /bin/false account2
##修改別名(aliases)設定檔
[root@mail99 postfix]# vi /etc/aliases
#ADD One(Email-Account) to One(Linux-Account)
it: account1
sales: account2
//任何信件寄到it會送到account1的信箱中
//任何信件寄到sales會送到account2的信箱中
#ADD One(Email-Account) to Many(Linux-Account). Mail Group
empoly: account1,account2
##套用別名(aliases)設定檔
[root@mail99 postfix]# ls -l /etc/aliases.db
-rw-r--r-- 1 root root 12288 Mar 4 10:34 /etc/aliases.db
[root@mail99 postfix]# newaliases
[root@mail99 postfix]# ls -l /etc/aliases.db
-rw-r--r-- 1 root root 12288 Mar 4 15:35 /etc/aliases.db
##套用postfix更新
[root@mail99 postfix]# postfix reload
postfix/postfix-script: refreshing the Postfix mail system
*************************************************
******Per-User Forwarding
*************************************************
=================================================
5 種型態的 Aliases (Sendmail)
1. 1-to-1 e.g. support: account_1
(送給 account1)
2. 1-to-many(list) support: account1,account2
(送給 account1,account2)
3. Include e.g. support: :include:/home/dean/support_list.txt
(送給在 /home/dean/support_list.txt 內所有有郵件名單的)
4. File e.g. support: /var/log/mail/support.mail
(檔案是要 full path 的文字檔,記得處理權限問題,並且要在 main.cf 內加上 allow_mail_to_files)
5. Piles e.g. support: | /usr/local/bin/sendhelp
(送給 /usr/local/bin/sendhelp 這隻程式處理)
=================================================
*************************************************
******Define Outbound Envelope
*************************************************
####檢查macin.cf 中的 mydestination 參數 是否包含 $mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain
*************************************************
******Define Outbound Envelope
*************************************************
##檢查macin.cf 中的 myorigin 參數
[root@mail99 postfix]# vi /etc/postfix/main.cf
myorigin = $mydomain
*************************************************
******Canonical Map
*************************************************
##編輯/etc/postfix/canonical
[root@mail99 postfix]# vi /etc/postfix/canonical
account1 it
account2 sales
//任何信件從account1寄出來會改寫成it
//任何信件從account2寄出來會改寫成sales
##更新canonical DB
[root@mail99 postfix]# postmap canonical
##驗證canonical DB
[root@mail99 postfix]# ls -l /etc/postfix/canonical.db
-rw-r--r-- 1 root root 12288 Mar 4 18:25 /etc/postfix/canonical.db
##新增main.cf中的canonical_maps參數設定
[root@mail99 postfix]# vi /etc/postfix/main.cf
//新增canonical_maps參數設定
canonical_maps = hash:/etc/postfix/canonical
// canonical_maps 修改發信者及收件者位址
// sender_canonical_maps 僅修改發信者位址
// recipient_canonical_maps 僅修改收件者位址
##重新載入postfix設定檔
[root@mail99 postfix]# postfix reload
postfix/postfix-script: refreshing the Postfix mail system
##驗證canonical_maps 參數設定
[root@mail99 postfix]# postconf |grep canonical_maps
canonical_maps = hash:/etc/postfix/canonical
*************************************************
******Blind Carbon Copy Maps
*************************************************
##編輯/etc/postfix/main.cf
[root@mail99 postfix]# vi /etc/postfix/main.cf
always_bcc = root
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
sender_bcc_maps = hash:/etc/postfix/sender_bcc
//always_bcc 可以監察所有進出的信, 寄給指定 Email
//recipient_bcc_maps 可以監察某收件者信, 寄給指定 Email
////dean root (收件者為dean時 會複製一份給root)
//sender_bcc_maps 可以監察某寄件者信, 寄給指定 Email
////dean root (寄件者為dean時 會複製一份給root)
##更新sender_bcc DB
[root@mail99 postfix]# postmap sender_bcc
##重新載入postfix設定檔
[root@mail99 postfix]# postfix reload
postfix/postfix-script: refreshing the Postfix mail system
*************************************************
******SMTP Authentication
*************************************************
[root@mail99 postfix]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to mail99 (127.0.0.1).
Escape character is '^]'.
220 mail99.startravel.com.tw ESMTP Postfix
ehlo localhost
250-mail99.startravel.com.tw
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
[root@mail99 ~]# rpm -qa | grep cyrus
cyrus-sasl-devel-2.1.22-5.el5
cyrus-sasl-lib-2.1.22-5.el5
cyrus-sasl-plain-2.1.22-5.el5
cyrus-sasl-md5-2.1.22-5.el5
cyrus-sasl-2.1.22-5.el5
[root@mail99 postfix-2.7.0]# make tidy
[root@mail99 postfix-2.7.0]# make makefiles CCARGS="-DUSE_SASL_AUTH -I/usr/include/sasl" AUXLIBS="-L/usr/lib -lsasl2"
//LinuxCBT Postfix 教學版
[root@mail99 postfix-2.7.0]# make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl" AUXLIBS="-L/usr/lib -lsasl2"
//官方文件版
[root@mail99 postfix-2.7.0]# postfix stop
postfix/postfix-script: stopping the Postfix mail system
[root@mail99 postfix-2.7.0]# make install
[root@mail99 postfix]# postconf | grep smtpd_sasl
smtpd_sasl_auth_enable = no
smtpd_sasl_authenticated_header = no
smtpd_sasl_exceptions_networks =
smtpd_sasl_local_domain =
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_type = cyrus
[root@mail99 postfix]# postconf | grep smtpd_recipient_restrictions
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
[root@mail99 postfix]# vi main.cf
## Add for sasl Authentication
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
[root@mail99 postfix-2.7.0]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to mail99 (127.0.0.1).
Escape character is '^]'.
220 mail99.startravel.com.tw ESMTP Postfix
ehlo 127.0.0.1
250-mail99.startravel.com.tw
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
[root@mail99 authlib]# wget http://sourceforge.net/projects/courier/files/authlib/0.63.0/courier-authlib-0.63.0.tar.bz2/download
[root@mail99 authlib]# tar -xjvf courier-authlib-0.63.0.tar.bz2
[root@mail99 authlib]# cd courier-authlib-0.63.0
[root@mail99 authlib]# rpm -qa |grep expect
[root@mail99 authlib]# rpm -qa |grep gcc
[root@mail99 authlib]# yum install expect gcc-c++
[root@mail99 authlib]# ./configure
[root@mail99 authlib]# make
[root@mail99 authlib]# make install
[root@mail99 authlib]# make install-configure
[root@mail99 authlib]# /usr/local/sbin/authdaemond start
[root@mail99 authlib]# less /usr/local/etc/authlib/authdaemonrc
[root@mail99 authlib]# ps -ax |grep auth
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
1720 ? Ss 0:00 saslauthd -a shadow
1721 ? S 0:00 saslauthd -a shadow
1722 ? S 0:00 saslauthd -a shadow
1723 ? S 0:00 saslauthd -a shadow
1724 ? S 0:00 saslauthd -a shadow
12015 ? S 0:00 /usr/local/sbin/courierlogger -pid=/usr/local/var/spool/authdaemon/pid -start /usr/local/libexec/courier-authlib/authdaemond
12016 ? S 0:00 /usr/local/libexec/courier-authlib/authdaemond
12017 ? S 0:00 /usr/local/libexec/courier-authlib/authdaemond
12018 ? S 0:00 /usr/local/libexec/courier-authlib/authdaemond
12019 ? S 0:00 /usr/local/libexec/courier-authlib/authdaemond
12020 ? S 0:00 /usr/local/libexec/courier-authlib/authdaemond
12021 ? S 0:00 /usr/local/libexec/courier-authlib/authdaemond
12023 pts/0 S+ 0:00 grep auth
[root@mail99 ~]# wget http://sourceforge.net/projects/courier/files/imap/4.7.0/courier-imap-4.7.0.tar.bz2/download
[root@mail99 ~]# tar -xjvf courier-imap-4.7.0.tar.bz2
[root@mail99 ~]# cd courier-imap-4.7.0
[root@mail99 ~]# rpm -qa |grep ssl
openssl-0.9.8e-12.el5_4.1
openssl-devel-0.9.8e-12.el5_4.1
留言列表