Browse Source

incomplete update of Postfix/Dovecot example doc (needs formatting/testing)

pull/805/head
David Goodwin 6 months ago
parent
commit
ea9df5b557
Failed to extract signature
  1. 32
      DOCUMENTS/Postfix-Dovecot-Postgresql-Example.md

32
DOCUMENTS/Postfix-Dovecot-Postgresql-Example.md

@ -245,17 +245,25 @@ An application password is intended to provide a way of sharing access to a spec
PostfixAdmin app passwords cannot be used to sign in to PostfixAdmin itself, but can be used by e.g. dovecot with the following password query :
(FIX: incorrect formatting + add \ on EOLs. Do we care about the auth_type?)
```
password query = SELECT user, password FROM (\
SELECT username AS user, password, '0' AS is_app_password FROM\
mailbox\
UNION\
SELECT username AS user, password, '1' AS is_app_password FROM mailbox_app_password\
)\
WHERE user='%u' AND password='%w' AND active=1 AND\
(\
"%r" IN (SELECT ip FROM totp_exception_address WHERE username="%u" OR username IS NULL OR username="@%d")\
OR (SELECT totp_secret FROM mailbox WHERE usenamer="%u") IS NULL\
OR is_app_password='1'\
)
password query = SELECT m.username AS user, m.password AS password FROM
(SELECT '%u' AS search_username, '%w' AS search_password, '%r' AS client_ip) AS params
LEFT JOIN
mailbox m ON m.username = params.search_username AND m.active = 1
LEFT JOIN
mailbox_app_password app ON app.username = params.search_username AND app.password_hash = params.search_password
LEFT JOIN
totp_exception_address te ON te.username = params.search_username AND te.ip = params.client_ip
WHERE
(
m.username IS NOT NULL AND
m.password = params.search_password AND
(m.totp_secret IS NULL OR te.username IS NOT NULL)
)
OR (app.username IS NOT NULL AND app.password_hash = params.search_password)
LIMIT 1;
```
See also tests/TotpPfTest.php ??
Loading…
Cancel
Save