Ik gebruik al vele jaren de combinatie Dovecot met Fetchmail voor mijn email. Op mijn blog kun je dan ook diverse artikelen vinden hoe ik een en ander heb geconfigureerd. Op dit moment wordt de inbox van elke gebruiker elke x aantal minuten ververst (via cron jobs voor elke gebruiker). Het nadeel hiervan is dat je soms een aantal minuten moet wachten voordat nieuwe email voor je zichtbaar wordt.

Ik heb daarom naar een manier gezocht om fetchmail ook te triggeren als ik een verbinding maak met Dovecot vanuit mijn email clients. In de documentatie van dovecot vond ik het volgende artikel dat uitlegt hoe je een script kunt aanroepen na authenticatie, maar voordat je begint met je IMAP sessie en dit werkt goed.

Als eerste moet je de file /etc/dovecot/conf.d/10-master.conf’ aanpassen zodat deze het volgende bevat:
(nieuw is laatste regel in ‘imap’ blok en gehele ‘imap-postlogin’ blok)

service imap {
  # Most of the memory goes to mmap()ing files. You may need to increase this
  # limit if you have huge mailboxes.
  #vsz_limit = $default_vsz_limit

  # Max. number of IMAP processes (connections)
  #process_limit = 1024

  executable = imap imap-postlogin
}

service imap-postlogin {
  # all post-login scripts are executed via script-login binary
  executable = script-login -d /usr/local/check_mail.sh

  # the script process runs as the user specified here (v2.0.14+):
  user = $default_internal_user

  # this UNIX socket listener must use the same name as given to imap executable
  unix_listener imap-postlogin {
  }
}

Maak vervolgens de nieuwe file ‘/usr/local/check_mail.sh’ aan en zet hierin de volgende inhoud

/usr/bin/fetchmail
exec $@

Als ik nu mijn email client opstart dan zal Dovecot onder water eerst een fetchmail aanroepen zodat nieuwe emails meteen zichtbaar worden. Dit scheelt soms toch weer een paar minuten wachten.