k heb meerdere pop3 account en gebruik fetchmail om die mail op te halen en in mijn eigen mail server te brengen. je kan tegenwoordig bij veel mail accounts ook je mail door sturen maar ik vind dit wel een handige methode. alles word van af 1 centraal punt geregeld. Om de mail bij van je gmail account op te halen moet je allereerst pop3 binnen google aanzetten, kijk bij instellingen. Google gebruikt standaard ssl voor pop3.
Zoals het niet moet
Om snel je mail werkend te krijgen kan je eenvoudig ssl aan zetten binnen je .fetchmailrc file
poll pop.gmail.com with proto POP3 user "{username@gmail.com}", with password "{PASSWORD}", is {localmailbox} here options ssl
probleem nu is dat je met het ophalen van je mail een foutmelding krijgt. de mail word overgens wel opgehaald
fetchmail: Server certificate verification error: unable to get local issuer certificate fetchmail: Server certificate verification error: certificate not trusted fetchmail: No mail for {username@gmail.com} at pop.gmail.com
Haal het certificaat op
wil je van deze melding af ga je als volgt te werk. in bv je home directory maak je een .cert directory.
$ mkdir ~/.certs $ cd ~/.certs
Gmail pop3 over SSL server presenteert een server certificaat bij iedere SSL connectie. je wilt deze controleren op echtheid. het certificaat is signed door certificate authority (CA), Equifax Secure (tegenwoordig GeoTrust) we gaan deze ophalen middels wget. https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.cer
wget --no-check-certificate -O Equifax.pem \ https://www.geotrust.com/resources/root_certificates/certificates/Equifax_Secure_Certificate_Authority.cer
als we het certificaat hebben moeten we het alleen nog rehashen zodat fetchmail er mee kan werken, dit doe je met het perl script c_rehash. Dit script word geleverd met de OpenSSL toolkit. wat dit script doet is het creëren van een symbolic link(s) naar de certificaat file (met een “.pem” extensie).
$ cd ~/.certs $ c_rehash . Doing . Equifa.pem => 594f1775.0 $ file 594f1775.0 594f1775.0: symbolic link to `Equifa.pem'
Test het certificaat
Om te controleren of alles goed werkt doe je het volgende. op de plek van de … … en — staat uiteraard veel meer informatie
$ openssl s_client -connect pop.gmail.com:995 -CApath ~/.certs/ ... ... --- +OK Gpop ready for requests from ....
nu heeft fetchmail de mogelijkheid om het certificaat te controleren. wat je nog extra kan doen is het certificaat van google ophalen en hier een fingerprint (md5) van nemen. dit is een extra controle mogelijkheid. houd er wel rekening mee als je de fingerprint opneemt en google krijgt een andere certificaat (oude verloopt) je de fingerprint moet aanpassen in de fetchmail configuratie.
haal het certificaat van gmail op.
edwin@ds9:~/.certs$ openssl s_client -connect pop.gmail.com:995 -showcerts CONNECTED(00000003) depth=1 /C=US/O=Google Inc/CN=Google Internet Authority verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=pop.gmail.com i:/C=US/O=Google Inc/CN=Google Internet Authority -----BEGIN CERTIFICATE----- MIIDWjCCAsOgAwIBAgIKYgy3qQADAAAJ5zANBgkqhkiG9w0BAQUFADBGMQswCQYD VQQGEwJVUzETMBEGA1UEChMKR29vZ2xlIEluYzEiMCAGA1UEAxMZR29vZ2xlIElu dGVybmV0IEF1dGhvcml0eTAeFw0wOTA3MTcxNzE2NTVaFw0xMDA3MTcxNzI2NTVa MGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1N b3VudGFpbiBWaWV3MRMwEQYDVQQKEwpHb29nbGUgSW5jMRYwFAYDVQQDEw1wb3Au Z21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDTHqjJfnRXdpmZ 4iP/WNCpvzX4N97bEZ3rvS4aDYey/DJetKZqp9DK1Ie4/C5j8M1aakwiTNA/eHS/ wNWVgQx8+HxproYKUeeYj3shYKEkHGfrRYBcyCxc7Gd6NSGaaYru3Z7nJ+STIPUJ E1N35JAwcjjdITVI2O4LckAL4b7GkwIDAQABo4IBLDCCASgwHQYDVR0OBBYEFIln 0T5I8Mw6cqhtUS4pyMGYRxOTMB8GA1UdIwQYMBaAFL/AMOv1QxE+Z7qekfv8atrj axIkMFsGA1UdHwRUMFIwUKBOoEyGSmh0dHA6Ly93d3cuZ3N0YXRpYy5jb20vR29v Z2xlSW50ZXJuZXRBdXRob3JpdHkvR29vZ2xlSW50ZXJuZXRBdXRob3JpdHkuY3Js MGYGCCsGAQUFBwEBBFowWDBWBggrBgEFBQcwAoZKaHR0cDovL3d3dy5nc3RhdGlj LmNvbS9Hb29nbGVJbnRlcm5ldEF1dGhvcml0eS9Hb29nbGVJbnRlcm5ldEF1dGhv cml0eS5jcnQwIQYJKwYBBAGCNxQCBBQeEgBXAGUAYgBTAGUAcgB2AGUAcjANBgkq hkiG9w0BAQUFAAOBgQCEGIebkDpktdjtzMiTTmEiN7e4vc73hEI4K0jYKyY0Wn5N dc44AXTfIWOzsikwb886PCUSevGs9rcw2/kaHdPaBSuGrzSCf8ODQqTC3odry3lo PtZGr6nf/81F5UW71+bE1iWOQlJ5/olWOr2SlqYla1iOmosEctD/GyoFnDh+BA== -----END CERTIFICATE----- ... .... --- +OK Gpop ready for requests from 62.194.255.209 10pf6519060eyz.0
er staat meer in de output maar dit is het belangrijkste. kopieer het gedeelt inclusief — BEGIN en — END naar bv gmail.pem en schrijf dit ook in je cert dir. als je dat hebt gedaan kan je de fingerprint van het certificaat opvragen, let op standaard gebeurt dit tegenwoording in SHA1 maar fetchmail gebruikt nog md5
$ cd ~/.certs $ openssl x509 -noout -in gmail.pem -enddate -fingerprint -md5 -dates MD5 Fingerprint=92:73:17:4C:34:4B:68:F7:B2:17:71:42:0D:7F:9F:33 notBefore=Jul 17 17:16:55 2009 GMT notAfter=Jul 17 17:26:55 2010 GMT
de fingerprint gebruik je in de fetchmailrc. als het certificaat verloopt krijg je van google een andere, je moet dan wel de fingerprint aanpassen.
.fetchmailrc
de .fetchmailrc komt er dan als volgt uit te zien.
poll pop.gmail.com with proto POP3 user "{USERNAME@gmail.com}", with password "{PASSWORD}", is {localmailbox} here options ssl sslfingerprint '92:73:17:4C:34:4B:68:F7:B2:17:71:42:0D:7F:9F:33' sslcertck sslcertpath /home/{USER}/.certs
om alles nog 1 keer helemaal te testen. kan je fetchmail in verbose mode draaien. alleen voor de gmail account. fetchmail -d0 -v pop.gmail.com
$ fetchmail -d0 -v pop.gmail.com fetchmail: 6.3.8 querying pop.gmail.com (protocol POP3) at Thu 08 Oct 2009 09:40:41 PM CEST: poll started Trying to connect to 74.125.79.111/995...connected. fetchmail: Issuer Organization: Google Inc fetchmail: Issuer CommonName: Google Internet Authority fetchmail: Server CommonName: pop.gmail.com fetchmail: pop.gmail.com key fingerprint: 92:73:17:4C:34:4B:68:F7:B2:17:71:42:0D:7F:9F:33 fetchmail: pop.gmail.com fingerprints match. fetchmail: POP3< +OK Gpop ready for requests from 62.194.xxx.xxx 24pf6525eyx.27 fetchmail: POP3> CAPA fetchmail: POP3< +OK Capability list follows fetchmail: POP3< USER fetchmail: POP3< RESP-CODES fetchmail: POP3< EXPIRE 0 fetchmail: POP3< LOGIN-DELAY 300 fetchmail: POP3< X-GOOGLE-VERHOEVEN fetchmail: POP3< UIDL fetchmail: POP3< . fetchmail: POP3> USER {USERNAME}@gmail.com fetchmail: POP3< +OK send PASS fetchmail: POP3> PASS * fetchmail: POP3< +OK Welcome. fetchmail: POP3> STAT fetchmail: POP3< +OK 0 0 fetchmail: No mail for {USERNAME}@gmail.com at pop.gmail.com fetchmail: POP3> QUIT fetchmail: POP3< +OK Farewell. fetchmail: 6.3.8 querying pop.gmail.com (protocol POP3) at Thu 08 Oct 2009 09:40:42 PM CEST: poll completed fetchmail: normal termination, status 1
alles werkt nu naar behoren, als je fetchmail in deamon mode draait houd dan wel rekening mee dat gmail niet vaker dan 1 in de 5 min gepolled wil worden. fetchmail: POP3< LOGIN-DELAY 300 ik zelf heb hem draaien op 600 sec (10 min).
Recente reacties