I don’t know what is the right subject for this topic, the idea is, i just want my outgoing smtp for sending email only, authenticated user not supposed send(or accidentally) to his/her smtp authentication account.which are in my configuration stored in virtual mailbox maps table. In normal case can delivering email to maildir.

I’m using postfixadmin to generate username/password, saslauthd with pam_mysql for querying username/password to mysql virtual mailbox table.Everything is okay with authentication things, except i don’t want username receiving email

In postfix access 5 manual there is actions called DISCARD

       DISCARD optional text...
              Claim successful delivery and silently discard  the
              message.   Log the optional text if specified, oth-
              erwise log a generic message.

              Note: this action currently affects all  recipients
              of  the  message.   To  discard  only one recipient
              without discarding  the  entire  message,  use  the
              transport(5) table to direct mail to the discard(8)
              service.

              This feature is available in Postfix 2.0 and later.

Here’s how i do it:

Create mysql lookup tables

mysql_recipient_discard_maps.cf

user = postfix
password = password
hosts = localhost
dbname = postfixdb
query = SELECT 'DISCARD [Sent only user!]' FROM mailbox WHERE username='%s' AND active = 1

Notice on query statement “query = SELECT ‘DISCARD [Sent only user!]‘ FROM mailbox WHERE username=’%s’ AND active = 1″

The query will always returning ‘DISCARD [Sent only user!]‘ if ‘%s’ match username in virtual mailbox tables

Now put lookup query to submission resctriction

submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=check_recipient_access,mysql:/etc/postfix/mysql_recipient_discard_maps.cf,permit_mynetworks,permit_sasl_authenticated,reject

Logs shows:

Dec  7 11:44:32 smtp postfix/smtpd[29040]: NOQUEUE: discard: RCPT from tebet.domain.net.id[202.xxx.xx.xxx] <hari.h@auth.domain.net>: Recipient address [Sent only user!]; from=<hari.h@domain.com> to=<hari.h@auth.domain.net> proto=ESMTP helo=<[192.168.200.100]> 
Dec  7 11:44:32 smtp postfix/smtpd[29040]: E9CE5208A1: client=tebet.domain.net.id[202.xxx.xx.xxx], sasl_method=PLAIN, sasl_username=hari.h@auth.domain.net

Maybe there’s easy/better solutions that i don’t know yet, but it work as i expected for now.

Share