Postfix (admin), Dovecot, MySQL: Aliases não funcionam

1

Eu sou capaz de enviar e-mail para as caixas de correio que eu configurei com o postfixadmin. Isso está funcionando corretamente e eu posso enviar e entregar mensagens neles. Mas agora eu estou precisando de aliases para funcionar corretamente também. Eu usei um tutorial para configurar as coisas listadas aqui . No entanto, de alguma forma, o postfix continua tentando enviar o email para uma caixa de correio para o alias.

E-mail principal: [email protected]

Alias email: [email protected]

Os registros no banco de dados estão definidos corretamente e quando estou executando este comando:

postmap -q [email protected] mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf

Estou recuperando o endereço de email correto: [email protected] , que tem uma caixa de correio anexada a ele. O que estou fazendo errado?

Os registros não fornecem informações úteis. Quando estou enviando um e-mail para meu alias, os logs se parecem com o seguinte:

Jun 10 10:38:13 localhost postfix/smtpd[3061]: C27DC614DD: client=mail-wm0-f41.google.com[74.125.82.41]
Jun 10 10:38:13 localhost postfix/cleanup[3072]: C27DC614DD: message-id=<CAGUk6whj3Drb-c=5N55TU80UoKR6sC2r4k+3jtxj9pBO5Gp5Pg@mail.gmail.com>
Jun 10 10:38:13 localhost postfix/qmgr[30229]: C27DC614DD: from=<[email protected]>, size=2011, nrcpt=1 (queue active)
Jun 10 10:38:13 localhost postfix/smtpd[3061]: disconnect from mail-wm0-f41.google.com[74.125.82.41]
Jun 10 10:38:14 localhost postfix/smtp[3074]: C27DC614DD: to=<[email protected]>, orig_to=<[email protected]>, relay=gmail-smtp-in.l.google.com[74.125.136.27]:25, delay=0.32, delays=0.07/0.01/0.15/0.1, dsn=2.0.0, status=sent (250 2.0.0 OK 1465547906 q2si2091788wme.1 - gsmtp)
Jun 10 10:38:14 localhost postfix/qmgr[30229]: C27DC614DD: removed

No entanto, ele não entra na caixa de correio de [email protected]

Meu /etc/postfix/main.cf :

smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no

smtpd_tls_cert_file=/etc/letsencrypt/live/domain.nl/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/domain.nl/privkey.pem
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_auth_only = yes

smtpd_tls_mandatory_protocols=!SSLv2
smtpd_tls_ciphers = high
smtpd_tls_loglevel = 1
smtpd_tls_ask_ccert=yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

smtpd_recipient_restrictions =
    permit_sasl_authenticated
    permit_mynetworks
    reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination

smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
myhostname = mail.domain.nl

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname

mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

disable_vrfy_command = yes
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_base = /var/mail

virtual_mailbox_maps = mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf

virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

virtual_alias_maps = mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf

header_checks = regexp:/etc/postfix/header_checks

Meu /etc/dovecot/dovecot-sql.conf.ext é assim:

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=spieard123
default_pass_scheme = MD5-CRYPT
password_query = SELECT username as user, password, '/var/mail/%d/%n' as userdb_home, 'maildir:/var/mail/%d/%n' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'

Meu /etc/dovecot/conf.d/auth-sql.conf.ext é assim:

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/mail/%d/%n
}

Converse com NickW.

Eu abri uma nova sala desde que o com NickW está congelado. Você pode participar aqui.

Configuração do Postfixadmin:

    
por Baklap4 10.06.2016 / 11:10

3 respostas

1

Acho que o problema é que você está selecionando seu ponto de extremidade da caixa de correio, não da tabela de usuários virtuais, portanto, o postfix sabe para onde deve ir, mas não o dovecot.

Alterar:

SELECT username as user, password, '/var/mail/%d/%n' as userdb_home, 'maildir:/var/mail/%d/%n' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'

Para:

password_query = SELECT email as user, password, '/var/mail/%d/%n' as userdb_home, 'maildir:/var/mail/%d/%n' as userdb_mail, 5000 as userdb_uid, 5000 as userdb_gid FROM virtual_users WHERE email=(SELECT destination FROM virtual_aliases WHERE source = '%u');

Obviamente, os nomes de banco de dados e tabelas podem variar. o AND active = '1' não deve ser necessário, já que não é a tabela de caixa de correio.

    
por 10.06.2016 / 12:30
0

Para verificar se seu alias está funcionando corretamente, você pode tentar verificar seu MySQL diretamente primeiro.

Do seu log, não vejo nenhuma tentativa de entregar na sua caixa de correio

Selecione o nome do alias

Para alias, você deve ver algo assim em seu log

29 06:46:59 mail postfix/local[15339]: A8967BF907: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=1.1, delays=1/0.02/0/0.11, dsn=2.0.0, status=sent (delivered

Ao olhar para o seu log, parece que é um alias para o seu endereço do Gmail

Editado Eu li seu comentário e simulei o mesmo cenário. Se você seguisse seu fluxo, deveria estar vendo o seguinte no seu registro.

Jun 29 08:15:31 mail postfix/qmgr[9259]: D803DC04BD: from=<[email protected]>, size=741, nrcpt=2 (queue active)
Jun 29 08:15:31 mail postfix/smtpd[18918]: disconnect from micro.sg[128.199.136.21] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Jun 29 08:15:31 mail dovecot: lda([email protected]): msgid=<[email protected]>: saved mail to INBOX
Jun 29 08:15:31 mail postfix/pipe[18984]: D803DC04BD: to=<[email protected]>, orig_to=<[email protected]>, relay=dovecot, delay=0.06, delays=0.01/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service)
Jun 29 08:15:33 mail postfix/smtp[18941]: D803DC04BD: to=<[email protected]>, orig_to=<[email protected]>, relay=gmail-smtp-in.l.google.com[74.125.200.27]:25, delay=1.4, delays=0.01/0/0.87/0.49, dsn=2.0.0, status=sent (250 2.0.0 OK 1467202533 f205si352653oib.152 - gsmtp)
Jun 29 08:15:33 mail postfix/qmgr[9259]: D803DC04BD: removed

note que houve 2 chamadas e entregas smtp diferentes. Você pode, por favor, checar e certificar-se de que sua entrega na caixa de correio local é feita no admin do postfix. Por favor, veja o postfixadmin - > Lista Virtual - > Caixa de Correio - > Tela de alias. Você deve entregar na caixa de entrada local

Se você marcou a caixa acima, é um problema diferente.

    
por 29.06.2016 / 12:44
0

Ignore minha primeira resposta (abaixo) - funciona, mas provavelmente não é uma boa solução.

Existe alguma chance de você receber receive_override_options = no_address_mappings no seu postfix main.cf ou master.cf.

Eu tinha como -o receive_override_options = no_address_mappings tanto para o SMTP como para a porta de envio. (Eu ainda tenho isso para o DSpam).

Se você removê-lo, o Postfix informará à Dovecot de qual usuário deve entregar o email:

userdb { 
    driver = sql
    args = /etc/dovecot/dovecot-sql.conf
}

/etc/dovecot/dovecot-sql.conf:

user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox, domain WHERE username = '%u' AND mailbox.active = '1' AND domain.domain = '%d' AND domain.active = '1'

Dessa forma, o Dovecot pode saber quais contas realmente existem (e ter diretórios de email) e o Postfix informa ao Dovecot para qual conta um endereço é mapeado.

Você tentou allow_all_users = yes em /etc/dovecot/conf.d/auth-sql.conf.ext

userdb {
  driver = static
  args = uid=vmail gid=vmail allow_all_users=yes home=/var/mail/%d/%n
}

Pode ser necessário vincular os usuários / domínios com alias

cd /var/mail
ln -s domain.tld alias_domain.tld
or
ln -s domain.tld/user domain2.tld/user_alias

que não o torna tão elegante quanto uma consulta SQL userdb em funcionamento para o dovecot seria ...

userdb { 
    driver = sql
    args = /etc/dovecot/dovecot-sql.conf
}

O melhor que eu tenho até agora é:

user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox, domain WHERE local_part = '%u' AND domain.domain = '%d';

(assumindo 5000: 5000 = vmail: vmail)

que faz com que pelo menos as user_aliases funcionem (não consigo fazer com que os aliases de usuários trabalhem em domínios de alias)

O Postbox rejeitará usuários virtuais desconhecidos corretamente devido às muitas Consultas SQL fornecidas pelo Postfixadmin, mas a consulta SQL do userdb fornecida para o dovecot não possui as tabelas alias e alias_domain e eu não sou bom o suficiente no SQL para corrigir isso.

    
por 16.10.2016 / 12:39