The smtpd.service unit should have PIDFile=/run/smtpd.pid in the [Service] section so systemd can determine the main process PID reliably. The smtpd.socket unit should be removed. It would require code changes to make smtpd use the socket passed by systemd. At present, smtpd always creates a new fd and calls connect(), which fails because systemd has already called connect() on the socket.