Hospedar subdomínios curinga usando o postfix

9

Estou tentando descobrir como posso obter o postfix para aceitar emails de qualquer subdomínio do meu site principal. Não tenho domínios virtuais, apenas uma longa lista de subdomínios para entrega local. Especificamente, estou alimentando python@*.mydomain.comum Python usando o arquivo de alias:

python:    |/www/proc_email.py

O Python pode lidar com a entrega a partir daí. Eu imagino isso parecendo algo parecido com:

mydestination = encendio, localhost.localdomain, localhost, *.mydomain.com

Estou executando a versão mais recente do postfix no Ubuntu (não tenho certeza de como verificar a versão).

Desde já, obrigado.

Jack M.
fonte

Respostas:

19

Você não pode usar curingas se listar explicitamente os destinos na sua configuração do Postfix, mas felizmente a $mydestinationopção aceita pesquisas de tabela. Portanto, tente definir $mydestinationum mapa como este:

mydestination = pcre:/etc/postfix/mydestinations

Em seguida, crie /etc/postfix/mydestinationscom regexps corretamente ancorados e escapados:

/^encendio$/                  ACCEPT
/^localhost\.localdomain$/    ACCEPT
/^localhost$/                 ACCEPT
/^.*\.mydomain\.example$/     ACCEPT

Tecnicamente, você pode colocar qualquer coisa no lugar de "ACEITAR", pois o resultado é ignorado; apenas a presença da partida é suficiente :

Especifique uma lista de nomes de host ou domínio, "/ file / name" ou "type: table", separados por vírgulas e / ou espaços em branco. Um padrão "/ file / name" é substituído pelo seu conteúdo; uma tabela de pesquisa "type: table" é correspondida quando um nome corresponde a uma chave de pesquisa (o resultado da pesquisa é ignorado).

Insyte
fonte
2
As expressões regulares devem ser respeitadas; Consulte serverfault.com/a/352928/84843
Richard Hansen
19

A solução pcre na resposta aceita funciona bem, mas você pode considerar ancorar o regexp para evitar obter ocorrências em apenas parte do nome do domínio.

/^encendio$/                  ACCEPT
/^localhost\.localdomain$/    ACCEPT
/^localhost$/                 ACCEPT
/^.*\.mydomain\.com$/         ACCEPT
gldr
fonte
0

*.mydomain.com não vai funcionar.

Você precisa criar relay-domainse colocar todos os seus subdomínios lá. 1 por linha.

solefald
fonte