หัวข้อนี้สบายมาก เพราะไม่รู้เรื่องเลย ลอกมาอย่างเดียว จาก 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 ที่ mail.google.com
ปรับให้สามารถส่งอีเมลจากเครื่องเราได้
การตั้งค่า -> บัญชี -> ส่งอีเมลเป็นแบบ เพิ่มที่อยู่อีเมลอื่นอีก
ทำตามขั้นตอน แล้วนำตัวเลขยืนยันมากรอกในช่อง เป็นอันเสร็จ
อ้างอิง