PostfixAdmin heeft in het menu een onderdeel staan 'externe email ophalen'. Maar wat heb je precies nodig om dit werkende te krijgen?

In onderstaande voorbeeld wordt er vanuit gegaan dat je postfixadmin hebt geïnstalleerd in /var/www/postfixadmin
Ook gaan we in tegenstelling tot veel tutorials geen gebruik maken van het standaard configuratie bestand .fetchmailrc. We hebben een database ter beschikking, dus die gaan we ook gebruiken.

Het ophalen van de email gebeurd met fetchmail. Op CentOS kan dit gemakkelijkst geïnstalleerd worden via yum.

dnf install fetchmail

Voor de database connectie en het locken van het fetchmail proces hebben we enkel perl modules nodig dnf install perl-CPAN dnf install "@Development Tools" yum install gcc cpan -i DBI cpan -i MIME::Base64 cpan -i File::Temp cpan -i Sys::Syslog cpan -i File::Temp cpan -i LockFile::Simple

Fetchmail heeft een lockfile nodig in een specifieke folder

mkdir /var/run/fetchmail touch /var/run/fetchmail/fetchmail-all.lock chown vmail.vmail /var/run/fetchmail -R mkdir /home/vmail chown vmail. /home/vmail

Note: de gebruiker vmail is deze die rechten heeft om bestanden te schrijven in de postvakken.
De laatste instructies zijn nodig omdat fetchmail een pid file wil schrijven

Tijd voor de database connectie op te zetten. Deze gaan we schrijven in het configuratie bestand die standaard gelezen wordt door postfixadmin. mkdir -p /etc/mail/postfixadmin/ vi /etc/mail/postfixadmin/fetchmail.conf

# host name
$db_host="localhost";
# database name
$db_name="database naam voor postfixadmin";
# database username
$db_username="gebruikersnaam";
# database password
$db_password="paswoord";

In principe zou het type database aan bovenstaande configuratie moeten toegevoegd worden. Maar zoals steeds Less is More. Dus installeer ik de perl module niet voor pg, alleen wat noodzakelijk is, en dat is voor mijn setup MySQL. our db_host --> Pg naar mysql"

Zet de rechten goed voor het confiuratie bestand chown vmail. /etc/mail/postfixadmin/fetchmail.conf

De gebruiker en groep zetten, deze laatste daar een shorthand methode

Alles klaar. Nu moet er iets de configuratie van postfixadmin lezen en het script uitvoeren. Hiervoor is een cron job een goede keuze.
We gaan het postfixadmin perl script iedere minuut uitvoeren (zodat de kortste periode die mogelijk kan ingevoerd worden kan gestart worden). * * * * * /usr/bin/sudo -H -u vmail perl /var/www/postfixadmin/ADDITIONS/fetchmail.pl

De gebruiker vmail is een specifieke gebruiker om email acties te doen. Deze kan best niet alles doen op het systeem. We moeten dus de rechten verlenen aan die gebruiker zodat hij het perl script kan uitvoeren. Voeg de gebruiker vmail toe aan de sudoers, maar beperk zijn rechten zoveel mogelijk. vmail ALL=(ALL) NOPASSWD:/usr/bin/fetchmail #Defaults requiretty

Het script heeft een tty nodig, dus zorg ervoor dat dit in comment is gezet

Kijk in de maillog wat er gebeurd. Misschien is het ook interessant om de berichten voor de user die de cronjob uitvoerd door te sturen naar een mailbox. Dit kan eenvoudig door in de home folder van die gebruiker een .forward bestand aan te maken met daarin een e-mailadres.
Een specifieke fechtmail log heb ik niet gevonden. In de maillog (/var/log/maillog) is er meestal wel al veel te zien.

Problemen met het binnen halen van e-mail van gmail?

Gmail heeft niet graag dat je email download naar bv postfixadmin of naar zelfs een outlook. Volgende pagina's zijn enorm belangrijk wanneer je problemen hebt met het inloggen, of wanneer je steeds opnieuw weer e-mail krijgt van Google dat er op één of andere server een poging is gedaan om in te loggen.

Log in op gmail en bezoek deze twee url's: https://accounts.google.com/DisplayUnlockCaptcha en https://myaccount.google.com/u/0/lesssecureapps

En als je IMAP gebruikt, dan maak je best verbinding via ssl, valideer je best het ssl certificaat en voeg je de extra_options toe 'sslproto tls1'
Dit laatste kan ik niet via de gui, maar moet ik injecteren in de fetchmail tabelupdate fetchmail set extra_options = 'sslproto tls1' where id = X;

can't lock /var/run/fetchmail/fetchmail-all.lock

Na een reboot merk ik dat fetchmail geen lock kan leggen. We hadden nochtans alles voorzien hiervoor, maar dit blijkt nu weg te zijn.

De simpelste oplossing is dit opnieuw uit te voeren na een reboot. Voor Centos kan dit via de cronjob door een 'one-liner' toe te voegen. @reboot mkdir /var/run/fetchmail && touch /var/run/fetchmail/fetchmail-all.lock && chown vmail.vmail /var/run/fetchmail -R

Tags gerelateerd aan dit artikel: