Я создал страницу регистрации в php с бэкэндом mysql.
Если пользователь вводит свой новый пароль, он должен стать SHA512-CRYPT через doveadm.
Это то, что я имею сейчас,
$password=hash('sha256', $pass);
Но я хочу создать хеш пароля с помощью doveadm из-за моего почтового сервера:
$password=(/usr/bin/doveadm pw -s SHA512-CRYPT -p "$pass")
Но это не похоже на работу, как я могу реализовать эту команду «doveadm» в php?
Вы должны позвонить с shell_exec метод:
$password = shell_exec('/usr/bin/doveadm pw -s SHA512-CRYPT -p '. $pass);
Избегать использования shell_exec опасно, если вы используете конфигурацию по умолчанию для dovecot в качестве команды в вашем примере, тогда dovecot создает хеш с 16 символами (байтами) соли, в результате вы можете использовать функцию php crypt для получения того же самого результат и вы избежите использования shell_exec
см. пример ниже
echo crypt("1234567890",'$6$Wh4t3v3rS4ltH3re'); //$6$ This part declares the SHA 512 and after the second $ must be 16 chars salt
даст вам совместимый результат с помощью команды doveadm pw