diff --git a/README.virtual-do-not-reply b/README.virtual-do-not-reply new file mode 100644 index 0000000..97293cb --- /dev/null +++ b/README.virtual-do-not-reply @@ -0,0 +1,159 @@ +# ==================== +# Forward E-Mails to 'do-not-reply@..' address to (file) /dev/null +# ==================== + +# --- +# Example for this readme: +# +# Create a forwarding to /dev/null for the address no-reply@cloud-01.oopen.de +# --- + +DOMAIN=""cloud-01.oopen.de +E_MAIL="no-reply@cloud-01.oopen.de" + +# see also: +# https://www.postfix.org/VIRTUAL_README.html +# +# https://think.unblog.ch/weiterleiten-von-postfix-alias-an-dev-null/ +# https://think.unblog.ch/en/forward-postfix-alias-to-dev-null/ +# +# https://www.serverwatch.com/guides/forwarding-a-postfix-virtual-alias-to-dev-null/ + + +# Notice: +# the usual solution is to forward to (file) /dev/null. In a local-only setup you could do +# that in /etc/aliases. +# +# However, if your're using Postfix virtual domains, it gets a little more complicated. With +# virtual domains/users, you can't forward mail to a file (like /dev/null). + + +# --- +# 1. Set up an alias user 'do-not-reply'that forwards incoming e-mails to /dev/null. +# --- + +# Add to file '/etc/aliases' a line like: +# do-not-reply: /dev/null + +if ! $(grep -q -E "^\s*do-not-reply:" /etc/aliases 2>/devnull) ; then + cat <> /etc/aliases + +do-not-reply: /dev/null +EOF +fi + +# Renew alias database: +# +newaliases + + +# --- +# 2. Set up the domain (domain part of not-reply address) +# --- + +# Create file '/etc/postfix/virtual_alias_domains' and add your domain '@cloud-01.oopen.de' +# +# ${DOMAIN} OK +# +if [[ ! -f "/etc/postfix/virtual_alias_domains" ]] ; then + + cat <> /etc/postfix/virtual_alias_domains +# - File: /etc/postfix/virtual_alias_domains +# - +# - Note: +# - a mapping file always has two columns. In such a 'one-dimensional' mapping (list of domains) +# - Postfix does not care about your second column. It does not even have to be 'OK', it can be +# - anything. +# - +# - Example: +# - OK + +${DOMAIN} OK +EOF +else + if ! $(grep -q -E "^\s*${DOMAIN}" /etc/postfix/virtual_alias_domains 2> /dev/null) ; then + cat <> /etc/postfix/virtual_alias_domains + +${DOMAIN} OK +EOF + fi +fi + + +# Create Postfix lookup table (database file) from '/etc/postfix/virtual_alias_domains' +# +postmap btree:/etc/postfix/virtual_alias_domains + + +# Add virtual_alias_domains to Postfix main Configuration +# +# ... +# virtual_alias_domains = +# btree:/etc/postfix/virtual_alias_domains +# ... +# +if ! $(grep -q -E "^\s*virtual_alias_domains\s*=\s*btree:/etc/postfix/virtual_alias_domains" /etc/postfix/main.cf) \ + && ! $(grep -q -E "^\s*btree:/etc/postfix/virtual_alias_domains" /etc/postfix/main.cf); then + perl -i -n -p -e "s#^(\s*virtual_alias_domains\s*=.*)#\1\n btree:/etc/postfix/virtual_alias_domains#" /etc/postfix/main.cf +fi + + + +# --- +# 3. Set up adress mapping +# --- + +# - Create file '/etc/postfix/virtual_alias_maps' and add your address mapping +# - +# - ${E_MAIL} do-not-reply +# - +if [[ ! -f "/etc/postfix/virtual_alias_maps" ]] ; then + + cat <> /etc/postfix/virtual_alias_maps +# - File: /etc/postfix/virtual_alias_maps +# - +# - Redirect mail for one address to one or more addresses. +# - +# - Example: +# - # incomming address 'no-reply@cloud-01.oopen.de' to local 'do-not-reply' address +# no-reply@cloud-01.oopen.de do-not-reply +# + +${E_MAIL} do-not-reply +EOF +else + if ! $(grep -q -E "^\s*${E_MAIL}" /etc/postfix/virtual_alias_maps 2> /dev/null) ; then + cat <> /etc/postfix/virtual_alias_maps + +${E_MAIL} do-not-reply +EOF + fi +fi + + +# Create Postfix lookup table (database file) from '/etc/postfix/virtual_alias_maps' +# +postmap btree:/etc/postfix/virtual_alias_maps + + + + +# Add virtual_alias_maps to Postfix main Configuration +# +# ... +# virtual_alias_maps = +# btree:/etc/postfix/virtual_alias_maps +# ... +# +if ! $(grep -q -E "^\s*virtual_alias_maps\s*=\s*btree:/etc/postfix/virtual_alias_maps" /etc/postfix/main.cf) \ + && ! $(grep -q -E "^\s*btree:/etc/postfix/virtual_alias_maps" /etc/postfix/main.cf); then + perl -i -n -p -e "s#^(\s*virtual_alias_maps\s*=.*)#\1\n btree:/etc/postfix/virtual_alias_maps#" /etc/postfix/main.cf +fi + + +# --- +# 4. Reload Postfix +# --- + +systemctl reload postfix +