我尝试将 Postfix 设置为测试服务器,以允许 TDD 测试在本地电子邮件服务器上运行电子邮件验证。这是我的 docker compose yml 文件
postfixadmin:
image: postfixadmin
ports:
- 9000:80
restart: unless-stopped
environment:
POSTFIXADMIN_DB_TYPE: sqlite
POSTFIXADMIN_DB_HOST: 192.168.0.12
POSTFIXADMIN_DB_PORT:
POSTFIXADMIN_DB_USER: postfixadmin
POSTFIXADMIN_DB_NAME: /var/tmp/postfixadmin.db
POSTFIXADMIN_DB_PASSWORD: example
POSTFIXADMIN_SETUP_PASSWORD: $$2y$$10$$LvtzgPciAKYK9UH3hKwekOki9/RXeV512BsJFxXD8GSME.vQO9Aq2
POSTFIXADMIN_SETUP_PASSWORD 是通过运行 http://localhost:9000/setup.php 检索的。在此示例中,它被选为 example123。但是我无法使用此设置密码登录。我必须重新启动容器,也许每次的加盐量都不同?我不知道,我只是无法登录任何东西,但服务器正在容器中运行。
有人知道我做错了什么或者我是否必须切换到其他软件?
谢谢您的反馈。
答案1
我设法找到了一个解决方案,因此将其留给其他人作为某种参考。
我必须输入双$才能退出变量查找
答案2
对于那些无法正确将哈希添加到文件的人,我tee
在获取哈希后使用了以下命令:
php -r 'echo password_hash("password", PASSWORD_DEFAULT);'
用新密码更改“密码”,然后获取结果并\
在每个密码前添加$
如果你得到:
$2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
然后你可以像这样输入:
$2y\$10\$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
然后运行这个:
echo "<?php
\$CONF['database_type'] = 'mysqli';
\$CONF['database_host'] = '--------------------';
\$CONF['database_port'] = '3306';
\$CONF['database_user'] = '--------------------';
\$CONF['database_password'] = '--------------------';
\$CONF['database_name'] = '--------------------';
\$CONF['setup_password'] = '\$2y\$10\$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
\$CONF['smtp_server'] = 'localhost';
\$CONF['smtp_port'] = '25';
\$CONF['encrypt'] = 'md5crypt';
\$CONF['configured'] = true;
\$CONF['dkim'] = 'NO';
\$CONF['dkim_all_admins'] = 'NO';
?>" | tee config.local.php
答案3
我会使用network_mode: host
主机网络允许容器直接访问主机上运行的服务