last-login Plugin

John Fawcett john at voipsupport.it
Mon Nov 16 13:17:23 EET 2020


On 16/11/2020 11:55, Andrea Gabellini wrote:
> Hello,
>
> i'm using last_login plugin and store data into a MySql DB. I'm using
> version 2.3.10.1 and the config is at the end of the email.
>
> I would like to store also the remote IP and the session name. The
> config is working but other informations are written only the first
> time. Any update is ignored but last_login time.
>
> Debugging MySQL, I notice that dovecot is using this query:
>
> INSERT INTO last_login (last_login,userid,rip,protocol,session) VALUES
> (1605350938,'xxxx',x.x.x.x','imap','jLFs5A609cdSN4Wh') ON DUPLICATE KEY
> UPDATE last_login=1605350938
>
> How can I modify the configuration?
>
>
>
> conf.d/95-last_login.conf:
> dict {
>     lastlogin = mysql:/etc/dovecot/dovecot-last-login.conf.ext
> }
>
> plugin {
>     last_login_dict = proxy::lastlogin
>     last_login_key = last-login/%u/%r/%s/%{session}
> }
>
> protocol imap {
>     mail_plugins = $mail_plugins last_login
> }
> protocol pop3 {
>     mail_plugins = $mail_plugins last_login
> }
>
> dovecot-last-login.conf.ext:
> connect = host=/var/lib/mysql/mysql.sock dbname=dovecot user=xxx
> password=xxx
>
> map {
>     pattern = shared/last-login/$userid/$rip/$service/$session
>     table = last_login
>     value_field = last_login
>     value_type = uint
>
>     fields {
>         userid = $userid
>         rip = $rip
>         protocol = $service
>         session = $session
>     }
> }
>
>
One solution is to use a primary key containing all the columns except
last_login. The side effect is that you can get more than one row per
userid, but if you order them by last_login you can get the last one.

John



More information about the dovecot mailing list