gitextract_bng2bnky/ ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODE_OF_CONDUCT.md │ ├── CONTRIBUTING.md │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-report.md │ │ ├── config.yml │ │ └── feature-request.md │ ├── SECURITY.md │ ├── releases.md │ └── workflows/ │ ├── release.yml │ └── test.yml ├── .gitignore ├── .golangci.yml ├── .mkdocs.yml ├── .version ├── AGENTS.md ├── COPYING ├── Dockerfile ├── HACKING.md ├── README.md ├── build.sh ├── cmd/ │ ├── README.md │ ├── maddy/ │ │ └── main.go │ ├── maddy-pam-helper/ │ │ ├── README.md │ │ ├── maddy.conf │ │ ├── main.c │ │ ├── main.go │ │ ├── pam.c │ │ └── pam.h │ └── maddy-shadow-helper/ │ ├── README.md │ └── main.go ├── config.go ├── contrib/ │ ├── README.md │ └── kubernetes/ │ └── chart/ │ ├── .helmignore │ ├── Chart.yaml │ ├── README.md │ ├── files/ │ │ ├── aliases │ │ └── maddy.conf │ ├── templates/ │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── configmap.yaml │ │ ├── deployment.yaml │ │ ├── pvc.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ └── tests/ │ │ └── test-connection.yaml │ └── values.yaml ├── directories.go ├── directories_docker.go ├── dist/ │ ├── README.md │ ├── apparmor/ │ │ └── dev.foxcpp.maddy │ ├── fail2ban/ │ │ ├── filter.d/ │ │ │ ├── maddy-auth.conf │ │ │ └── maddy-dictonary-attack.conf │ │ └── jail.d/ │ │ ├── maddy-auth.conf │ │ └── maddy-dictonary-attack.conf │ ├── install.sh │ ├── logrotate.d/ │ │ └── maddy │ ├── systemd/ │ │ ├── maddy.service │ │ └── maddy@.service │ └── vim/ │ ├── ftdetect/ │ │ └── maddy-conf.vim │ ├── ftplugin/ │ │ └── maddy-conf.vim │ └── syntax/ │ └── maddy-conf.vim ├── docs/ │ ├── docker.md │ ├── faq.md │ ├── index.md │ ├── internals/ │ │ ├── quirks.md │ │ ├── specifications.md │ │ ├── sqlite.md │ │ └── unicode.md │ ├── man/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── maddy.1.scd │ │ └── prepare_md.py │ ├── multiple-domains.md │ ├── reference/ │ │ ├── auth/ │ │ │ ├── dovecot_sasl.md │ │ │ ├── external.md │ │ │ ├── ldap.md │ │ │ ├── netauth.md │ │ │ ├── pam.md │ │ │ ├── pass_table.md │ │ │ ├── plain_separate.md │ │ │ └── shadow.md │ │ ├── blob/ │ │ │ ├── fs.md │ │ │ └── s3.md │ │ ├── checks/ │ │ │ ├── actions.md │ │ │ ├── authorize_sender.md │ │ │ ├── command.md │ │ │ ├── dkim.md │ │ │ ├── dnsbl.md │ │ │ ├── milter.md │ │ │ ├── misc.md │ │ │ ├── rspamd.md │ │ │ └── spf.md │ │ ├── config-syntax.md │ │ ├── endpoints/ │ │ │ ├── imap.md │ │ │ ├── openmetrics.md │ │ │ └── smtp.md │ │ ├── global-config.md │ │ ├── modifiers/ │ │ │ ├── dkim.md │ │ │ └── envelope.md │ │ ├── modules.md │ │ ├── smtp-pipeline.md │ │ ├── storage/ │ │ │ ├── imap-filters.md │ │ │ └── imapsql.md │ │ ├── table/ │ │ │ ├── auth.md │ │ │ ├── chain.md │ │ │ ├── email_localpart.md │ │ │ ├── email_with_domain.md │ │ │ ├── file.md │ │ │ ├── regexp.md │ │ │ ├── sql_query.md │ │ │ └── static.md │ │ ├── targets/ │ │ │ ├── queue.md │ │ │ ├── remote.md │ │ │ └── smtp.md │ │ ├── tls-acme.md │ │ └── tls.md │ ├── seclevels.md │ ├── third-party/ │ │ ├── dovecot.md │ │ ├── mailman3.md │ │ ├── rspamd.md │ │ └── smtp-servers.md │ ├── tutorials/ │ │ ├── alias-to-remote.md │ │ ├── building-from-source.md │ │ ├── pam.md │ │ └── setting-up.md │ └── upgrading.md ├── framework/ │ ├── address/ │ │ ├── doc.go │ │ ├── norm.go │ │ ├── norm_test.go │ │ ├── rfc6531.go │ │ ├── rfc6531_test.go │ │ ├── split.go │ │ ├── split_test.go │ │ ├── validation.go │ │ └── validation_test.go │ ├── buffer/ │ │ ├── buffer.go │ │ ├── bytesreader.go │ │ ├── file.go │ │ └── memory.go │ ├── cfgparser/ │ │ ├── env.go │ │ ├── imports.go │ │ ├── parse.go │ │ └── parse_test.go │ ├── config/ │ │ ├── config.go │ │ ├── directories.go │ │ ├── endpoint.go │ │ ├── endpoint_test.go │ │ ├── lexer/ │ │ │ ├── LICENSE.APACHE │ │ │ ├── README.md │ │ │ ├── dispenser.go │ │ │ ├── dispenser_test.go │ │ │ ├── lexer.go │ │ │ ├── lexer_test.go │ │ │ └── parse.go │ │ ├── map.go │ │ ├── map_test.go │ │ ├── module/ │ │ │ ├── check_action.go │ │ │ ├── interfaces.go │ │ │ └── modconfig.go │ │ └── tls/ │ │ ├── client.go │ │ ├── general.go │ │ └── server.go │ ├── container/ │ │ ├── container.go │ │ ├── lifetime.go │ │ └── registry.go │ ├── dns/ │ │ ├── debugflags.go │ │ ├── dnssec.go │ │ ├── dnssec_test.go │ │ ├── idna.go │ │ ├── norm.go │ │ ├── override.go │ │ └── resolver.go │ ├── exterrors/ │ │ ├── dns.go │ │ ├── exterrors.go │ │ ├── fields.go │ │ ├── smtp.go │ │ └── temporary.go │ ├── future/ │ │ ├── future.go │ │ └── future_test.go │ ├── hooks/ │ │ └── hooks.go │ ├── log/ │ │ ├── log.go │ │ ├── orderedjson.go │ │ ├── output.go │ │ ├── syslog.go │ │ ├── syslog_stub.go │ │ ├── writer.go │ │ └── zap.go │ ├── logparser/ │ │ ├── parse.go │ │ └── parse_test.go │ ├── module/ │ │ ├── auth.go │ │ ├── blob_store.go │ │ ├── check.go │ │ ├── delivery_target.go │ │ ├── imap_filter.go │ │ ├── modifier.go │ │ ├── module.go │ │ ├── module_specific_data.go │ │ ├── modules/ │ │ │ ├── dummy.go │ │ │ └── modules.go │ │ ├── msgmetadata.go │ │ ├── mxauth.go │ │ ├── partial_delivery.go │ │ ├── storage.go │ │ ├── table.go │ │ └── tls_loader.go │ └── resource/ │ ├── netresource/ │ │ ├── dup.go │ │ ├── fd.go │ │ ├── listen.go │ │ └── tracker.go │ ├── resource.go │ ├── singleton.go │ └── tracker.go ├── go.mod ├── go.sum ├── internal/ │ ├── README.md │ ├── auth/ │ │ ├── auth.go │ │ ├── auth_test.go │ │ ├── dovecot_sasl/ │ │ │ └── dovecot_sasl.go │ │ ├── external/ │ │ │ ├── externalauth.go │ │ │ └── helperauth.go │ │ ├── ldap/ │ │ │ └── ldap.go │ │ ├── netauth/ │ │ │ └── netauth.go │ │ ├── pam/ │ │ │ ├── module.go │ │ │ ├── pam.c │ │ │ ├── pam.go │ │ │ ├── pam.h │ │ │ └── pam_stub.go │ │ ├── pass_table/ │ │ │ ├── hash.go │ │ │ ├── table.go │ │ │ └── table_test.go │ │ ├── plain_separate/ │ │ │ ├── plain_separate.go │ │ │ └── plain_separate_test.go │ │ ├── sasl.go │ │ ├── sasl_test.go │ │ ├── sasllogin/ │ │ │ └── sasllogin.go │ │ └── shadow/ │ │ ├── module.go │ │ ├── read.go │ │ ├── shadow.go │ │ └── verify.go │ ├── authz/ │ │ ├── lookup.go │ │ └── normalization.go │ ├── check/ │ │ ├── authorize_sender/ │ │ │ └── authorize_sender.go │ │ ├── command/ │ │ │ └── command.go │ │ ├── dkim/ │ │ │ ├── dkim.go │ │ │ └── dkim_test.go │ │ ├── dns/ │ │ │ ├── dns.go │ │ │ └── dns_test.go │ │ ├── dnsbl/ │ │ │ ├── common.go │ │ │ ├── common_test.go │ │ │ ├── dnsbl.go │ │ │ └── dnsbl_test.go │ │ ├── milter/ │ │ │ ├── milter.go │ │ │ └── milter_test.go │ │ ├── requiretls/ │ │ │ └── requiretls.go │ │ ├── rspamd/ │ │ │ └── rspamd.go │ │ ├── skeleton.go │ │ ├── spf/ │ │ │ └── spf.go │ │ └── stateless_check.go │ ├── cli/ │ │ ├── app.go │ │ ├── clitools/ │ │ │ ├── clitools.go │ │ │ ├── termios.go │ │ │ └── termios_stub.go │ │ ├── ctl/ │ │ │ ├── appendlimit.go │ │ │ ├── hash.go │ │ │ ├── imap.go │ │ │ ├── imapacct.go │ │ │ ├── moduleinit.go │ │ │ └── users.go │ │ └── extflag.go │ ├── dmarc/ │ │ ├── dmarc.go │ │ ├── evaluate.go │ │ ├── evaluate_test.go │ │ ├── verifier.go │ │ └── verifier_test.go │ ├── dsn/ │ │ └── dsn.go │ ├── endpoint/ │ │ ├── dovecot_sasld/ │ │ │ ├── dovecot_sasl.go │ │ │ └── mech_info.go │ │ ├── imap/ │ │ │ └── imap.go │ │ ├── openmetrics/ │ │ │ └── om.go │ │ └── smtp/ │ │ ├── date.go │ │ ├── metrics.go │ │ ├── session.go │ │ ├── smtp.go │ │ ├── smtp_test.go │ │ ├── smtputf8_test.go │ │ ├── submission.go │ │ └── submission_test.go │ ├── imap_filter/ │ │ ├── command/ │ │ │ └── command.go │ │ └── group.go │ ├── libdns/ │ │ ├── acmedns.go │ │ ├── alidns.go │ │ ├── cloudflare.go │ │ ├── digitalocean.go │ │ ├── gandi.go │ │ ├── gcore.go │ │ ├── googleclouddns.go │ │ ├── hetzner.go │ │ ├── leaseweb.go │ │ ├── metaname.go │ │ ├── namecheap.go │ │ ├── namedotcom.go │ │ ├── provider_module.go │ │ ├── rfc2136.go │ │ ├── route53.go │ │ └── vultr.go │ ├── limits/ │ │ ├── limiters/ │ │ │ ├── bucket.go │ │ │ ├── concurrency.go │ │ │ ├── limiters.go │ │ │ ├── multilimit.go │ │ │ └── rate.go │ │ └── limits.go │ ├── modify/ │ │ ├── dkim/ │ │ │ ├── dkim.go │ │ │ ├── dkim_test.go │ │ │ ├── keys.go │ │ │ └── keys_test.go │ │ ├── group.go │ │ ├── replace_addr.go │ │ └── replace_addr_test.go │ ├── msgpipeline/ │ │ ├── bench_test.go │ │ ├── bodynonatomic_test.go │ │ ├── check_group.go │ │ ├── check_runner.go │ │ ├── check_test.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── dmarc_test.go │ │ ├── metrics.go │ │ ├── modifier_test.go │ │ ├── module.go │ │ ├── msgpipeline.go │ │ ├── msgpipeline_test.go │ │ ├── objname.go │ │ └── regress_test.go │ ├── proxy_protocol/ │ │ └── proxy_protocol.go │ ├── smtpconn/ │ │ ├── pool/ │ │ │ └── pool.go │ │ ├── smtpconn.go │ │ ├── smtpconn_test.go │ │ └── smtputf8_test.go │ ├── sqlite/ │ │ ├── is.go │ │ ├── modernc_sqlite3.go │ │ ├── no_sqlite3.go │ │ └── sqlite3.go │ ├── storage/ │ │ ├── blob/ │ │ │ ├── fs/ │ │ │ │ ├── fs.go │ │ │ │ └── fs_test.go │ │ │ ├── s3/ │ │ │ │ ├── s3.go │ │ │ │ └── s3_test.go │ │ │ ├── test_blob.go │ │ │ └── test_blob_nosqlite.go │ │ └── imapsql/ │ │ ├── bench_test.go │ │ ├── delivery.go │ │ ├── external_blob_store.go │ │ ├── imapsql.go │ │ └── maddyctl.go │ ├── table/ │ │ ├── chain.go │ │ ├── email_localpart.go │ │ ├── email_with_domain.go │ │ ├── file.go │ │ ├── file_test.go │ │ ├── identity.go │ │ ├── regexp.go │ │ ├── sql_query.go │ │ ├── sql_query_test.go │ │ ├── sql_table.go │ │ └── static.go │ ├── target/ │ │ ├── delivery.go │ │ ├── queue/ │ │ │ ├── metrics.go │ │ │ ├── queue.go │ │ │ ├── queue_test.go │ │ │ ├── timewheel.go │ │ │ └── timewheel_test.go │ │ ├── received.go │ │ ├── remote/ │ │ │ ├── connect.go │ │ │ ├── dane.go │ │ │ ├── dane_delivery_test.go │ │ │ ├── dane_test.go │ │ │ ├── debugflags.go │ │ │ ├── metrics.go │ │ │ ├── mxauth_test.go │ │ │ ├── policy_group.go │ │ │ ├── remote.go │ │ │ ├── remote_test.go │ │ │ └── security.go │ │ ├── skeleton.go │ │ └── smtp/ │ │ ├── sasl.go │ │ ├── sasl_test.go │ │ ├── smtp_downstream.go │ │ ├── smtp_downstream_test.go │ │ └── smtputf8_test.go │ ├── testutils/ │ │ ├── bench_delivery.go │ │ ├── buffer.go │ │ ├── check.go │ │ ├── filesystem.go │ │ ├── logger.go │ │ ├── modifier.go │ │ ├── multitable.go │ │ ├── smtp_server.go │ │ ├── table.go │ │ └── target.go │ ├── tls/ │ │ ├── acme/ │ │ │ └── acme.go │ │ ├── file.go │ │ └── self_signed.go │ └── updatepipe/ │ ├── backend.go │ ├── pubsub/ │ │ ├── pq.go │ │ └── pubsub.go │ ├── pubsub_pipe.go │ ├── serialize.go │ ├── unix_pipe.go │ └── update_pipe.go ├── maddy.conf ├── maddy.conf.docker ├── maddy.go ├── maddy_debug.go ├── signal.go ├── signal_nonposix.go ├── systemd.go ├── systemd_nonlinux.go └── tests/ ├── README.md ├── basic_test.go ├── build_cover.sh ├── conn.go ├── cover_test.go ├── dovecot_sasl_test.go ├── dovecot_sasld_test.go ├── ghsa_5835_4gvc_32pc_test.go ├── gocovcat.go ├── golangci-noisy.yml ├── imap_test.go ├── imapsql_test.go ├── issue327_test.go ├── limits_test.go ├── lmtp_test.go ├── modules_test.go ├── mta_test.go ├── multiple_domains_test.go ├── reload_non_unix.go ├── reload_test.go ├── reload_unix.go ├── replace_addr_test.go ├── run.sh ├── smtp_autobuffer_test.go ├── smtp_test.go ├── stress_test.go ├── t.go └── testdata/ ├── check_command.sh ├── testing+addHeader@maddy.test.hdr └── testing+reject@maddy.test.exit