8

I'm creating a bounce email system where addressees can reply to messages on my site.

However when the email are sent to the user containing the previous message, the Reply-To field contains an address like this [email protected] (which contains the ID at the end).

If the user replies, the reply message will be sent back to [email protected] which of course, doesn't have its own mailbox, except the [email protected].

How would I redirect all incoming messages coming from a specific wildcard notification-message-*@mysite.com to [email protected]? I did some research, but no solid part worked, including the luser_relay = [email protected] and putting notification-message-* in the postfix aliases table, the notification@ has a Maildir, so the mail would go into it.

A concept diagram:

enter image description here

I am using Ubuntu 11.04.

1

4 Answers 4

2

I'd be inclined to solve this using recipient_delimiter.

If you don't mind using slightly different Reply-To addresses, you can set:

recipient_delimiter = +

in your config, and then mail to e.g. [email protected] (note the +) will be delivered to the notification user (assuming there are no more-specific rules/users matching notification+message-988742).

You could try setting recipient_delimiter = - (so that you could use the Reply-To headers as they are in the question) but I'm not sure how that would work with multiple instances of the delimiter on the left-hand side, and I don't have a Postfix to hand to check.

14
+100

As have said mschuett, you can use regexp

First check that postfix supports regexp:

root @ mail / #  postconf -m | grep regexp
regexp

Create the file /etc/postfix/aliases-regexp and add to it your regexp

root @ mail / #  cat /etc/postfix/aliases-regexp
/notification-message-[0-9]+@example\.net/ [email protected]

Run postmap and check whether it works:

root @ mail / #  postmap /etc/postfix/aliases-regexp
root @ mail / #  postmap -q [email protected] regexp:/etc/postfix/aliases-regexp
[email protected]

If everything is OK, add this file to your alias database

Example:

root @ mail / #  cat /etc/postfix/main.cf | grep ^alias_maps
alias_maps = hash:/etc/aliases regexp:/etc/postfix/aliases-regexp

If you are using virtual domains, add this file to your virtual_alias_maps

Example:

root @ mail / #  cat /etc/postfix/main.cf | grep ^virtual_alias_maps
virtual_alias_maps = mysql:/etc/postfix/mysql/alias.conf regexp:/etc/postfix/aliases-regexp

Do not forget to restart postfix.

Good luck!

4
  • 1
    Is it possible to store the regex aliases in a database like MySQL or sqlite3, like you do with the mysql: lookup table?
    – gitaarik
    Dec 17, 2014 at 11:14
  • 3
    @rednaw Yes, definitely possible (and preferable IMO)! Just modify the query used in the mysql-virtual-aliases.cf file to something like query = SELECT destination FROM virtual_aliases WHERE is_regexp=0 AND source='%s' OR is_regexp=1 AND '%s' REGEXP CONCAT('^',source,'$') as described in this question. This way, you can use both regexp aliases and non-regexp aliases in the same table with a simple database flag (is_regexp). Pretty sweet. Jan 29, 2015 at 0:18
  • @NickMerrill plase considered adding your comment as an answer.
    – adopilot
    Sep 24, 2018 at 11:50
  • postconf-m misses a white space. Unfortunately I don't have enough rep to fix it. :( ( meta.stackexchange.com/questions/77233 )
    – Morty
    Jan 12, 2021 at 6:10
3

Alias maps (virtual, local, ...) will work in combination with the regexp_table format. But if you have compiled in PCRE, then you can also use the pcre_table format.

Otherwise you should search for "Postfix catch-all" which is a bit more greedy.

2
  • Do you have an example of how I can do this?
    – MacMac
    Oct 7, 2012 at 14:29
  • Just use virtual_alias_maps with a regexp_table /notification-message-[0-9]*@mysite.com/ [email protected]
    – mschuett
    Oct 8, 2012 at 14:45
0

Create a rule using "with specific words in the sender's address." It will accept multiple words as "or" but I don't see how to do it with an "and." Perhaps this gets you far enough.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .