all-in-one 5 (postfix ส่งโดย gmail+courier)

ทำ mail server ใช้ postfix + Courier

หัวข้อนี้สบายมาก เพราะไม่รู้เรื่องเลย ลอกมาอย่างเดียว จาก The Perfect Setup - Debian Etch (Debian 4.0) - Page 5
ของเราแปลงนิดเดียว ตรงที่จะให้กูเกิลเป็นตัวส่งเมลแทน (เรารับเหมือนเดิม แต่ให้กูเกิลส่งให้)
ทีแรกกะว่าจะใช้ exim4 แต่หาเอกสารติดตั้งที่สมบูรณ์ยาก และความนิยมของ postfix มีมากกว่า เลยตัดสินใจใช้อันนี้ครับ

ติดตั้ง
# aptitude install postfix libsasl2 sasl2-bin libsasl2-modules libdb3-util procmail
# dpkg-reconfigure postfix

General type of configuration?   <<<--- Internet Site
Where should mail for root go   <<<--- [ENTER]
Mail name?   <<<--- mail.example.com
Other destinations to accept mail for? (blank for none)   <<<--- mail.example.com, server1.example.com, localhost.example.com, localhost, mail.example.org
Force synchronous updates on mail queue?   <<<--- No
Local networks?   <<<--- 127.0.0.0/8, 192.168.0.0/16
Use procmail for local delivery?   <<<--- Yes
Mailbox size limit   <<<--- 0
Local address extension character?   <<<--- +
Internet protocols to use?   <<<--- all

ปรับ
# postconf -e 'relayhost = smtp.gmail.com'
# postconf -e 'smtp_sasl_auth_enable = yes'
# postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'
# postconf -e 'smtp_sasl_security_options ='
# postconf -e 'smtpd_sasl_security_options = noanonymous'
# postconf -e 'smtpd_sasl_local_domain ='
# postconf -e 'smtpd_sasl_auth_enable = yes'
# postconf -e 'broken_sasl_auth_clients = yes'
# postconf -e 'smtpd_recipient_restrictions = permit_sasl_authenticated,permit_mynetworks,reject_unauth_destination'
# postconf -e 'inet_interfaces = all'
# echo 'pwcheck_method: saslauthd' >> /etc/postfix/sasl/smtpd.conf
# echo 'mech_list: plain login' >> /etc/postfix/sasl/smtpd.conf

ทำเรื่อง ssl
# mkdir /etc/postfix/ssl
# cd /etc/postfix/ssl/
# openssl genrsa -des3 -rand /etc/hosts -out smtpd.key 1024

2597 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
...................++++++
..........................................++++++
e is 65537 (0x10001)
Enter pass phrase for smtpd.key:   <<<--- PASSWORD
Verifying - Enter pass phrase for smtpd.key:   <<<--- SAME-PASSWORD

สร้างกุญแจ
# chmod 600 smtpd.key
# openssl req -new -key smtpd.key -out smtpd.csr

Enter pass phrase for smtpd.key:   <<<--- SAME-PASSWORD
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:   <<<--- TH
State or Province Name (full name) [Some-State]:   <<<--- Bangkok
Locality Name (eg, city) []:   <<<--- Bangrak
Organization Name (eg, company) [Internet Widgits Pty Ltd]:   <<<--- Example Company
Organizational Unit Name (eg, section) []:   <<<--- Computer Department
Common Name (eg, YOUR name) []:   <<<--- MYNAME-MYSURNAME
Email Address []:   <<<--- ***GMAIL-USER@gmail.com***

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:   <<<--- [ENTER]
An optional company name []:   <<<--- [ENTER]

ลงทะเบียน
# openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt

Signature ok
subject=/C=TH/ST=Bangkok/L=Bangrak/O=Example Company/OU=Computer Department/CN=myname-mysurname/emailAddress=gmail.user@gmail.com
Getting Private key
Enter pass phrase for smtpd.key:   <<<--- SAME-PASSWORD

# openssl rsa -in smtpd.key -out smtpd.key.unencrypted

Enter pass phrase for smtpd.key:   <<<--- SAME-PASSWORD
writing RSA key

# mv -f smtpd.key.unencrypted smtpd.key
# openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

650
Generating a 1024 bit RSA private key
..................++++++
....................++++++
writing new private key to 'cakey.pem'
Enter PEM pass phrase:   <<<--- SAME-PASSWORD
Verifying - Enter PEM pass phrase:   <<<--- SAME-PASSWORD
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:   <<<--- TH
State or Province Name (full name) [Some-State]:   <<<--- Bangkok
Locality Name (eg, city) []:   <<<--- Bangrak
Organization Name (eg, company) [Internet Widgits Pty Ltd]:   <<<--- Example Company
Organizational Unit Name (eg, section) []:   <<<--- Computer Department
Common Name (eg, YOUR name) []:   <<<--- MYNAME-MYSURNAME
Email Address []:   <<<--- ***GMAIL-USER@gmail.com***

ปรับ postfix เรื่องกุญแจ
# postconf -e 'smtpd_tls_auth_only = no'
# postconf -e 'smtp_use_tls = yes'
# postconf -e 'smtpd_use_tls = yes'
# postconf -e 'smtp_tls_note_starttls_offer = yes'
# postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/smtpd.key'
# postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.crt'
# postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
# postconf -e 'smtpd_tls_loglevel = 1'
# postconf -e 'smtpd_tls_received_header = yes'
# postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
# postconf -e 'tls_random_source = dev:/dev/urandom'
# postconf -e 'myhostname = mail.example.com'

ไฟล์รหัสผ่าน gmail
# echo "smtp.gmail.com GMAIL-USER@gmail.com:GMAIL-PASSWORD" >> /etc/postfix/sasl_passwd
# chown root:root /etc/postfix/sasl_passwd
# chmod 600 /etc/postfix/sasl_passwd
# postmap /etc/postfix/sasl_passwd

เรื่อง sasl
# mkdir -p /var/spool/postfix/var/run/saslauthd

ปรับให้มาใช้ใน chroot ของ postfix
# vi /etc/default/saslauthd

...
# Should saslauthd run automatically on startup? (default: no)
#START=no
START=yes
...
# Other options (default: -c)
# See the saslauthd man page for information about these options.
#
# Example for postfix users: "-c -m /var/spool/postfix/var/run/saslauthd"
# Note: See /usr/share/doc/sasl2-bin/README.Debian
#OPTIONS="-c"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
...

เริ่ม sasl ใหม่
# /etc/init.d/saslauthd start

ทดสอบ sasl
# telnet localhost 25

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)
ehlo localhost
250-server1.example.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
quit
221 2.0.0 Bye
Connection closed by foreign host.

ติดตั้ง courier เพื่อใช้งาน pop3 และ imap
# aptitude install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

Create directories for web-based administration ?   <<<--- No
SSL certificate required   <<<--- Ok

ทำเรื่อง Maildir เป็นเรื่องสุดท้ายเสมอ
# postconf -e 'home_mailbox = Maildir/'
# postconf -e 'mailbox_command ='
# /etc/init.d/postfix restart

เสร็จเรื่องติดตั้ง

เรื่องปรับ gmail

สมัครเข้าใช้บริการ gmail ที่ mail.google.com

ปรับให้สามารถส่งอีเมลจากเครื่องเราได้

การตั้งค่า -> บัญชี -> ส่งอีเมลเป็นแบบ เพิ่มที่อยู่อีเมลอื่นอีก

ทำตามขั้นตอน แล้วนำตัวเลขยืนยันมากรอกในช่อง เป็นอันเสร็จ

อ้างอิง

Topic: