the problem is default

 protocols = imap pop3 

packaging should use

protocols =

protocols = $protocols imap

etc.

or you could 

---
Aki Tuomi
Dovecot oy

-------- Original message --------
From: Markus Schönhaber <dovecot@list-post.mks-mail.de>
Date: 02/03/2018 19:44 (GMT+02:00)
To: dovecot@dovecot.org
Subject: Debian: Dovecot 2.3.0.1 won't start if dovecot-pop3d is missing

Hello,

given a Debian 9 system with Dovecot 2.2.34 installed from self-built
packages made from the official tarball combined with Stephan Bosch's
debian files (upgraded multiple times from packages made in a similar way).
Today, I updated this system to 2.3.0.1 from the official repository at
repo.dovecot.org. After the update, dovecot wouldn't start because of:
> dovecot: master: Fatal: service(pop3) access(/usr/lib/dovecot/pop3)
failed: No such file or directory

Obviously, installing the dovecot-pop3d package, which provides the pop3
binary, made the error go away.
Nevertheless, until v. 2.2.34 not installing the pop3 binary had never
been a problem. Trying to solve this, I even commented the following
sections in the config (which previously hadn't caused problems since
the lines defining the ports etc. had already been commented):

> 10-master.conf:

> service pop3-login {
>   inet_listener pop3 {
>     #port = 110
>   }
>   inet_listener pop3s {
>     #port = 995
>     #ssl = yes
>   }
> }

> service pop3 {
>   # Max. number of POP3 processes (connections)
>   #process_limit = 1024
> }

> 10-director.conf:

> service pop3-login {
>   #executable = pop3-login director
> }

After those changes I had the configuration shown below, which produced
the described error.
Why would Dovecot insist that the pop3 binary has to exist on the system?

BTW: Note the protocols = line in the doveconf -n output, whereas

> # grep -R protocols /etc/dovecot/
> /etc/dovecot/dovecot.conf:# Most (but not all) settings can be overridden by different protocols and/or
> /etc/dovecot/dovecot.conf:# Enable installed protocols
> /etc/dovecot/dovecot.conf:!include_try /usr/share/dovecot/protocols.d/*.protocol
> /etc/dovecot/conf.d/20-managesieve.conf:#protocols = $protocols sieve
> /etc/dovecot/conf.d/10-ssl.conf:# SSL protocols to use
> /etc/dovecot/conf.d/10-ssl.conf:#ssl_protocols = !SSLv2

> # ll /usr/share/dovecot/protocols.d/
> insgesamt 12
> -rw-r--r-- 1 root root 28 Mär  2 14:51 imapd.protocol
> -rw-r--r-- 1 root root 28 Mär  2 14:51 lmtpd.protocol
> -rw-r--r-- 1 root root 29 Mär  2 14:51 managesieved.protocol

Regards
  mks


doveconf -n

# 2.3.0.1 (ffd8a29): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.0.1 (d33dca2)
# OS: Linux 4.9.0-6-amd64 x86_64 Debian 9.3 ext4
auth_master_user_separator = *
auth_mechanisms = plain login
dict {
  quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
imap_id_log = *
mail_home = /var/spool/vmail/home/%d/%n
mail_location = mdbox:/var/spool/vmail/mail/%d/%n
mail_log_prefix = "%s[%p](%u)<%{session}>: "
mail_plugins = " quota acl"
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope
encoded-character vacation subaddress comparator-i;ascii-numeric
relational regex imap4flags copy include variables body enotify
environment mailbox date index ihave duplicate mime foreverypart extracttext
namespace {
  list = children
  location =
mdbox:/var/spool/vmail/mail/Public:INDEXPVT=/var/spool/vmail/home/Public
  prefix = Public/
  separator = /
  subscriptions = no
  type = public
}
namespace inbox {
  inbox = yes
  location =
  mailbox Drafts {
    special_use = \Drafts
  }
  mailbox Junk {
    special_use = \Junk
  }
  mailbox Sent {
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    special_use = \Sent
  }
  mailbox Trash {
    special_use = \Trash
  }
  prefix =
  separator = /
}
passdb {
  args = /etc/dovecot/master-users
  driver = passwd-file
  master = yes
  pass = yes
}
passdb {
  args = /etc/dovecot/dovecot-proxy-sql.conf.ext
  driver = sql
}
passdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  driver = sql
}
passdb {
  args = /etc/dovecot/dovecot-system-sql.conf.ext
  driver = sql
}
plugin {
  acl = vfile
  mail_log_events = delete undelete expunge copy mailbox_delete
mailbox_rename
  mail_log_fields = uid box msgid size
  quota = dict:User quota::proxy::quota
  recipient_delimiter = +
  sieve = file:~/sieve;active=~/.dovecot.sieve
  sieve_after = /var/spool/vmail/home/1-global/sieve
}
protocols = imap pop3 lmtp imap lmtp sieve
service auth {
  inet_listener {
    port = 12345
  }
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0666
    user = postfix
  }
}
service dict {
  unix_listener dict {
    group = vmail
    mode = 0600
    user = vmail
  }
}
service imap-login {
  inet_listener imap_2 {
    port = 10143
  }
}
service lmtp {
  unix_listener /var/spool/postfix/private/dovecot-lmtp {
    group = postfix
    mode = 0600
    user = postfix
  }
}
ssl_cert = </etc/ssl/certs/complete.crt
ssl_dh =  # hidden, use -P to show it
ssl_key =  # hidden, use -P to show it
userdb {
  args = /etc/dovecot/master-users
  default_fields = master_user=%u
  driver = passwd-file
}
userdb {
  args = /etc/dovecot/dovecot-sql.conf.ext
  default_fields = master_user=%u
  driver = sql
}
userdb {
  args = /etc/dovecot/dovecot-system-sql.conf.ext
  driver = sql
}
verbose_proctitle = yes
protocol lmtp {
  mail_plugins = " quota acl quota sieve"
  postmaster_address = postmaster@<domain>
}
protocol lda {
  mail_plugins = " quota acl sieve"
}
protocol imap {
  mail_max_userip_connections = 40
  mail_plugins = " quota acl imap_quota acl"
}
remote 192.168.1.116 {
  protocol imap {
    disable_plaintext_auth = no
  }
}
remote 192.168.1.127 {
  protocol imap {
    disable_plaintext_auth = no
  }
}