web-dev-qa-db-ja.com

Postfix(admin)、Dovecot、MySQL:エイリアスが機能しない

Postfixadminで設定したメールボックスにメールを送信できます。これは正しく機能しており、メールを送受信できます。しかし今、私はエイリアスも正しく機能する必要があります。私はチュートリアルを使用して、リストされているものを設定しました ここ 。しかし、どういうわけか、postfixはエイリアスのメールボックスにメールを送信しようとし続けます。

メインメール:[email protected]

エイリアスメール:[email protected]

データベース内のレコードが正しく設定されており、このコマンドを実行している場合:

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

メールボックスが添付されている[email protected]という正しい電子メールアドレスを取得しています。私は何が間違っているのですか?

ログには有用な情報は含まれていません。エイリアスにメールを送信すると、ログは次のようになります。

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

それでも、[email protected]のメールボックスには入りません。

私の/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

私の/etc/dovecot/dovecot-sql.conf.extは次のようになります:

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'

私の/etc/dovecot/conf.d/auth-sql.conf.extは次のようになります:

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

NickWとチャット

NickWのある部屋が凍っていたので、新しい部屋を開きました。 ここから参加できます。

Postfixadminセットアップ:Postfix admin

1
Baklap4

私の最初の返信(下記)は無視してください-それは機能しますが、おそらく良い解決策ではありません。

Postfixmain.cfまたはmaster.cfでreceive_override_options = no_address_mappingsを取得する可能性はありますか?.

SMTPと送信ポートの両方で-oreceive_override_options = no_address_mappingsとして使用しました。 (私はまだDSpam用に持っています)。

削除すると、PostfixはDovecotにメールを配信するユーザーを通知します。

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'

このようにして、Dovecotは実際に存在する(そしてメールディレクトリを持つ)アカウントを知ることができ、PostfixはDovecotにアドレスがどのアカウントにマップされるかを伝えます。


/etc/dovecot/conf.d/auth-sql.conf.extでallow_all_users = yesを試しましたか

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

エイリアスされたユーザー/ドメインをシンボリックリンクする必要がある場合があります

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

これにより、dovecotのuserdbSQLルックアップが機能するほどエレガントではなくなります...

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

私がこれまでに得た最高のものは:

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

(5000:5000 = vmail:vmailと仮定)

これにより、少なくともuser_aliasesが機能します(ユーザーエイリアスをエイリアスドメインで機能させることができません)

Postfixadminによって提供される多くのSQLクエリにより、Postboxは不明な仮想ユーザーを正しく拒否しますが、dovecot用に提供されるuserdb SQLルックアップにはaliasテーブルとalias_domainテーブルの両方がないため、SQLで修正するのに十分ではありません。

0
macgeneral

エイリアスが正しく機能していることを確認するには、最初にMySQLを直接確認してみてください。

あなたのログから、あなたのメールボックスに配信しようとする試みは見当たりません

エイリアスからgotoを選択します

エイリアスの場合、ログに次のようなものが表示されます。

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

ログを見ると、Gmailアドレスのエイリアスのように見えます

編集済みコメントを読み、同じシナリオをシミュレートしました。フローをたどると、ログに次のように表示されます。

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

2つの異なるSMTP呼び出しと配信があったことに注意してください。ローカルメールボックスへの配信がpostfix管理者でチェックされていることを確認してください。 postfixadmin->仮想リスト->メールボックス->エイリアス画面を参照してください。ローカル受信ボックスチェックに配信する必要があります

上記のチェックボックスをオンにした場合、それは別の問題のセットです。

0
Someone Special