OS:LINUX ubuntu server 9.10
1.下載postfix
apt-get install postfix
安裝時會問要那種type 選 internet site就可以了
host name預設本機名稱
使用 /etc/init.d/postfix restart 可以重啟postfix服務
dpkg-reconfigure postfix 可以重設
2.接下來安裝mailx 簡易的telnet收信軟體
apt-get install mailx
裝好後 打mailx 就會出現目前執行者有沒有新的信件
意指如果要架設mail server 關於使用帳密的架設 等於就是ubuntu使用者的建立
也就是ubuntu有個root 就會有root的信箱
3.接下來安裝pop與imap的服務 下面這個軟體是要與如outlook溝通用的
apt-get install dovecot-postfix
安裝好後編輯/etc/dovecot/dovecot-postfix.conf此檔 更改
protocols = imap pop3 imaps pop3s managesieve
disable_plaintext_auth=no
ssl_disable = no
ssl_cert_file = /etc/ssl/certs/ssl-mail.pem
ssl_key_file = /etc/ssl/private/ssl-mail.key
mail_location = mbox:~/mail:INBOX=/var/mail/%u
然後重啟服務
/etc/init.d/dovecot restart
接下來使用windows電腦之outlook設定
設定新信箱 帳密為ubuntu的使用者帳密 pop3與stmp皆為mail server的IP
皆著就可以測試 這個階段pop3正常就可以了
4.申請domain name
到上面的網址加入會員可以免費申請domain name
我申請為caramel.homelinux.net
如果IP有改也可以登入這個免費網站裡改 記得要把DNS指定為mail server
也可設成Mail Routing的MX record
MX hostname可以為caramel.homelinux.net 或是在申請一個DNS
可在http://www.mxtoolbox.com/ http://www.robtex.com/dns/ 裡查看
編輯/etc/hosts 加上
ISP的動態IP caramel.homelinux.net
5.還有一些額外的軟體要裝 下面這些軟體如有sasl的 是要寄外部信 與其它MTA做溝通用的 procmail則是篩信用的
apt-get install libsasl2-2 sasl2-bin libsasl2-modules db4.7-util procmail openssl
6.接下來進行profix的校正
關於postfix的設定主要在/etc/postfix/main.cf裡
我的設定為
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
#信箱位置
mail_spool_directory = /var/mail
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
# delay_warning_time = 4h
#hostname為本機的名稱 也可以設為mail. caramel.homelinux.net不過DNS要申請就是了
myhostname = unbuntu
#domain就是剛申請的
mydomain = caramel.homelinux.net
mail_name = mailserver
#aliases可用來設定群組 也就是寄一個名字卻可以寄給這名字下屬的所有帳號 或幫一個帳號取別名
#記得要在這個檔案裡面加上root:/dev/null 這樣就不會都寄給root
#並要下指令postalias /etc/aliases 才會產生aliases.db檔 hash要讀db檔 不過寫時不加db喔
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
#@後面要表示的
myorigin = $mydomain
#意思為寄信的目的地位址 如果是mydestination所指的 就是不外傳 代表是站內
mydestination = $mydomain, 192.168.1.4
#relayhost很重要 寄外部信 所依存的ISP mailserver
relayhost = $mydomain
relayhost = [168.95.4.10]
relayhost = [168.95.4.23]
relayhost = [ms23.hinet.net]
relayhost = [msa.hinet.net]
#通常動態IP server不給寄外部信 可以在/etc/postfix/isp_sasl_passwd加上自己的ISP帳密
#如isp_sasl_passwd的內容可為msa.hinet.net username:password
#記得要下指令postmap hash:/etc/postfix/isp_sasl_passwd 產生isp_sasl_passwd.db檔
smtp_sasl_password_maps = hash:/etc/postfix/isp_sasl_passwd
masquerade_domains = hinet.net
best_mx_transport = local
mynetworks_style = subnet
#這代表這台mailserver所屬的IP群組 與permit_mynetworks有關
mynetworks = 127.0.0.0/8, 192.168.1.0/24
recipient_delimiter = +
inet_interfaces = all
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix
config_directory = /etc/postfix
#sasl setup
#關於sasl設定非常重要 這關係到信寄不寄得出去
smtpd_sasl_auth_enable = yes
smtp_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
#smtpd_tls_wrappermode = no
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_client_restrictions = permit_sasl_authenticated
#outlook收信一定要打yes
broken_sasl_auth_clients = yes
mailbox_size_limit = 10240000
message_size_limit = 1240000
皆下來是/etc/postfix/master.cf的設定
smtp inet n - - - - smtpd
smtps inet n - - - - smtpd
7.進行ssl與smtpd設定
mkdir /etc/postfix/ssl
cd /etc/postfix/ssl/
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024
chmod 600 smtpd.key
openssl req -new -key smtpd.key -out smtpd.csr
openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt
openssl rsa -in smtpd.key -out smtpd.key.unencrypted
mv -f smtpd.key.unencrypted smtpd.key
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650
8. Postfix 支援 Cyrus-SASL© V2 認証
修改/etc/default/saslauthd
START=yes
MECHANISMS="pam"
修改 /etc/postfix/sasl/smtpd.conf
echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf
addgroup /etc/postfix sasl
測試saslauthd
/etc/init.d/saslauthd restart
testsaslauthd -u username -p password
啟動postfix
/etc/init.d/postfix restart
perl -MMIME::Base64 -e 'print encode_base64("0username\0password");'
會跑出一組亂碼 這時要複製記住
telnet 127.0.0.1 25
EHLO qemu HostName
會跑出這個mailserver支持的一些東西
皆著打
auth plain 複製的亂碼
看到235 Authentication successful 就代表sasl成功運作
不過我沒成功過也可以收寄信就是了
不過因為我用動態IP 如果那個IP已是黑名單 就怎麼寄都寄不到外面
不過如果是內部網路是沒有問題的
9.client端C:\windows\system32\drivers\etc\hosts
要加上192.168.1.X caramel.homelinux.net
也就是要在client的網路上說明這是內部的mailserver
10.如果信都塞在queue裡 可下指令
postsuper -r
postqueue -f
就可以送出
ps:smtp server 我都是用內部網域 如果用caramel.homelinux.net
又沒有作第九步的話 就會被網路上的 root DNS先擋掉了
也就是用內部網域把信丟給mail server 然後它在用relay host轉寄到外面去
留言列表