Bump the version to 2.1.0.
[mailpopbox.git] / smtp.go
diff --git a/smtp.go b/smtp.go
index 4173d9b81a44a31cf64cce58c2b273e5f70f5007..c22728e8f29b0de18f196b306594f4d6c0761247 100644 (file)
--- a/smtp.go
+++ b/smtp.go
@@ -102,9 +102,15 @@ func (server *smtpServer) TLSConfig() *tls.Config {
 }
 
 func (server *smtpServer) VerifyAddress(addr mail.Address) smtp.ReplyLine {
-       if server.maildropForAddress(addr) == "" {
+       s := server.configForAddress(addr)
+       if s == nil {
                return smtp.ReplyBadMailbox
        }
+       for _, blocked := range s.BlockedAddresses {
+               if blocked == addr.Address {
+                       return smtp.ReplyMailboxUnallowed
+               }
+       }
        return smtp.ReplyOK
 }
 
@@ -150,14 +156,21 @@ func (server *smtpServer) DeliverMessage(en smtp.Envelope) *smtp.ReplyLine {
        return nil
 }
 
-func (server *smtpServer) maildropForAddress(addr mail.Address) string {
+func (server *smtpServer) configForAddress(addr mail.Address) *Server {
        domain := smtp.DomainForAddress(addr)
        for _, s := range server.config.Servers {
                if domain == s.Domain {
-                       return s.MaildropPath
+                       return &s
                }
        }
+       return nil
+}
 
+func (server *smtpServer) maildropForAddress(addr mail.Address) string {
+       s := server.configForAddress(addr)
+       if s != nil {
+               return s.MaildropPath
+       }
        return ""
 }