Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / Uputstva / Opšte / Sendmail+fetchmail za Gmail

Sendmail+fetchmail za Gmail

by Nikola Kotur last modified Nov 23, 2006 05:49 PM
Ukoliko imate Gmail nalog, uz pomoć ovog objašnjenja ćete moći koristiti vaš računar da direktno šalje i prima poštu preko programa Sendmail i Fetchmail.

U prvom delu će biti objapnjeno podešavanje Sendmaila (uz TLS enkripciju) da šalje poštu direktno na Gmail. Drugi deo je rezervisan za Fetchmail (preko STARTTLS) koji će pokupiti poštu sa vašeg Gmail naloga i preneti je na lokalni sistem.

Ovo objašnjenje se najlakše može primeniti na Slackware 11 GNU/Linux sistemu (pošto isti ja koristim), te će se primena svesti skoro na Copy&Paste. U ostalim GNU/Linux distribucijama koje koriste Sendmail, princip je isti. Ukoliko vaša distribucija ne koristi Sendmail, već Postfix, pogledajte ovo uputstvo.

Pre svega, zašto Sendmail? Pa, dolazi podrazumevano u Slackware distribuciji, a takođe se radi o odličnom programu koji vrši rutiranje najvećeg broja emailova na Internetu. Jeste da konfigurisanje zadaje glavobolje, ali jednom kada se navikne, i nije toliko teško (lažem, jeste).

I još jedna uvodna napomena, Gmail nalog možete sasvim normalno koristiti iz vašeg email programa (KMail, Claws, Sylpheed, Evolution, Gnus,…), i podešavanje je vrlo lako. Na sajtu Gmail.com možete naći uputstvo kako da podesite email klijente. Ali, mi ćemo ovde podešavati email servere, što je sasvim drugačije iskustvo. Na ovaj način, sa prispelom i poslatom poštom možemo manipulisati na razne načine (ClamAV, procmail, spamassasin, itd.), a takođe možemo napraviti da više korisnika unutar lokalne mreže koristi jedan email nalog. Mogućnosti su beskrajne. A, s druge strane, meni je uvek lakše podesiti .fetchmailrc kada dodajem novi email nalog, nego kliktati u GUI okruženjima. Oni koji imaju mnogo email naloga na raznim serverima - znaće o čemu pričam.

No, da ne dužim dalje, krećemo.

Sendmail

Prvo proverite DNS postavke. Neka vaš računar ima određen FQDN. Ja koristim DynDNS servise, te se moj računar zove johny.homelinux.net. Ukoliko ovo ne uradite, Sendmail će imati problema sa pokretanjem.

Otvorite fajl /usr/share/sendmail/cf/cf/sendmail-slackware.mc i postavite da se sledeće nalazi u njemu:

dnl# This is the default sendmail .mc file for Slackware. To generate
dnl# the sendmail.cf file from this (perhaps after making some changes),
dnl# use the m4 files in /usr/share/sendmail/cf like this:
dnl#
dnl# cp sendmail-slackware.mc /usr/share/sendmail/cf/config.mc
dnl# cd /usr/share/sendmail/cf
dnl# sh Build config.cf
dnl#
dnl# You may then install the resulting .cf file:
dnl# cp config.cf /etc/mail/sendmail.cf
dnl#
include(`../m4/cf.m4')
VERSIONID(`default setup for Slackware Linux')dnl
OSTYPE(`linux')dnl
dnl# These settings help protect against people verifying email addresses
dnl# at your site in order to send you email that you probably don't want:
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
dnl# No timeout for ident:
define(`confTO_IDENT', `0')dnl
dnl# Enable the line below to use smrsh to restrict what sendmail can run:
dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl
dnl# See the README in /usr/share/sendmail/cf for a ton of information on
dnl# how these options work:
FEATURE(`use_cw_file')dnl
FEATURE(`use_ct_file')dnl
FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl
FEATURE(`access_db', `hash -T /etc/mail/access')dnl
FEATURE(`blacklist_recipients')dnl
FEATURE(`local_procmail',`',`procmail -t -Y -a $h -d $u')dnl
FEATURE(`always_add_domain')dnl
FEATURE(`redirect')dnl
dnl# Turn this feature on if you don't always have DNS, or enjoy junk mail:
dnl FEATURE(`accept_unresolvable_domains')dnl
EXPOSED_USER(`root')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl
dnl# Also accept mail for localhost.localdomain:
LOCAL_DOMAIN(`localhost.localdomain')dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(procmail)dnl
define(`SMART_HOST',`smtp.gmail.com')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`CERT_DIR', `MAIL_SETTINGS_DIR`'certs')
define(`confCACERT_PATH', `CERT_DIR')
define(`confCACERT', `CERT_DIR/CAcert.pem')
define(`confSERVER_CERT', `CERT_DIR/mycert.pem')
define(`confSERVER_KEY', `CERT_DIR/mykey.pem')
define(`confCLIENT_CERT', `CERT_DIR/mycert.pem')
define(`confCLIENT_KEY', `CERT_DIR/mykey.pem')

Kao što vidite, dodali smo nekoliko opcija na kraju. Zatim treba napraviti fajl sa podacima o vašem Gmail nalogu:

mkdir /etc/mail/auth
touch /etc/mail/auth/client-info

Sadržaj fajla /etc/mail/auth/client-info je samo jedna linija i ona sadrži vaše informacije u sledećem formatu:

AuthInfo:smtp.gmail.com "U:root" "I:GMAILKORISNIK@gmail.com" "P:LOZINKA"

Zamenite GMAILKORISNIK sa vašim Gmail korisničkim imenom, a i LOZINKA zamenite vašom aktuelnom lozinkom. Obratite pažnju da su ovi podaci u obliku teksta, te dozvolama osigurajte vašu lozinku.

Sendmail je vrlo osetljiv na dozvole fajlova koje koristi, te sigurnost morate pritegnuti:

chown -R root:wheel /etc/mail/auth
chmod 700 /etc/mail/auth
chmod 600 /etc/mail/auth/*

Sada ćemo da napravimo naše SSL sertifikate.

mkdir /etc/mail/certs
cd certs
openssl dsaparam 1024 -out dsa1024.pem
openssl req -x509 -nodes -days 3650 -newkey dsa:dsa1024.pem -out /etc/mail/certs/mycert.pem -keyout /etc/mail/certs/mykey.pem
ln -s /etc/mail/certs/mycert.pem /etc/mail/certs/CAcert.pem
openssl req -x509 -new -days 3650 -key /etc/mail/certs/mykey.pem -out /etc/mail/certs/mycert.pem

Zatim ćemo da uklonimo privremene fajlove i pritegnemo sigurnost:

rm dsa1024.pem
chown -R root:wheel .
chmod 700 .
chmod 600 *

Kada smo ovo sve uradili, vreme je da stavimo novi Sendmailov konfiguracioni fajl na ispravno mesto i da restartujemo odgovarajuće demone.

cd /usr/share/sendmail/cf/cf
m4 sendmail-slackware.mc > /etc/mail/sendmail.cf
/etc/rc.d/rc.sendmail stop
/etc/rc.d/rc.sendmail start

Sada ćemo da testiramo da li je sve u redu (pomno pratite fajl /var/log/maillog, pošto ćete u njemu pročitati da li sve radi ili ne).

mail -s 'Testiranje' GMAILKORISNIK@gmail.com < /etc/slackware-version
mail -s 'Testiranje' KORISNIK@nekidomen.com < /etc/slackware-version

Ukoliko je sve prošlo u redu, a trebalo bi, završili smo sa podešavanjem Sendmaila (teži deo).

Fetchmail

Prvo je potrebno pokupiti odgovarajuće Google ključeve i staviti ih u ispravan format. To se radi pomoću sledeće naredbe:

openssl s_client -connect pop.gmail.com:995 -showcerts

I dobićete ovakav izlaz:

CONNECTED(00000003)
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=California/L=Mountain View/O=Google Inc./CN=pop.gmail.com
issuer=/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
No client certificate CA names sent
---
SSL handshake has read 891 bytes and written 308 bytes
---
New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DES-CBC3-SHA
Key-Arg : None
Start Time: 1163116556
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
+OK Gpop ready for requests from 76.17.143.252 z80pf3240098pyg

Sve između —–BEGIN CERTIFICATE—– i —–END CERTIFICATE—– je Google-ov sertifikat, te ga morate staviti u odgovarajući format, odnosno jednostavno ekstrahovati. Da ne bih objašnjavao predugačko, preuzmite ova dva fajla: equifax.pem i googlepop.pem i snimite ih na vaš računar (prvi fajl je serifikat Equifax CA, kojeg Google koristi). Kod mene, ovi fajlovi se nalaze u /home/kotnik/.certs.

Sada treba pokrenuti c_rehash komandu koja će napraviti odgovarajuće simboličke linkove:

c_rehash /home/kotnik/.certs

Da su sertifikati u odgovarajućem formatu i ispravni možete proveriti pomoću sledeće komande:

openssl s_client -connect pop.gmail.com:995 -CApath /home/kotnik/.certs/

Na kraju biste trebali da vidite ovakve redove:

New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DES-CBC3-SHA
Key-Arg : None
Start Time: 1163117053
Timeout : 300 (sec)
Verify return code: 0 (ok)

Verify return code 0 (ok) znači da je sve u redu.

Zatim možete preći na konfigurisanje fajla ~/.fetchmailrc. Evo kako treba da izgleda:

set daemon 600
set syslog
set postmaster kotnik
# GMail
poll pop.gmail.com with proto POP3 and options no dns
user 'GMAILKORISNIK@gmail.com' with pass "LOZINKA" is 'kotnik' here options ssl sslcertck
sslcertpath '/home/kotnik/.certs'
smtphost localhost

Nakon ovoga, možete pokrenuti fetchmail sledećom komandom:

fetchmail -v

I pomno pratiti šta govori u /var/log/maillog. Sve bi trebalo da prođe kako treba, i da pošta sa vašeg Gmail naloga bude prebačena na vašu mašinu. Ukoliko se to ne dešava, razlog ćete naći u /var/log/maillog fajlu. Takođe, ponovite korake u ovom objašnjenju, pošto ste nešto onda verovatno preskočili.

Document Actions