我从 ubuntu aptitude 包管理器安装了 policyd-rate-limit,
我的发行版是:ubuntu 22.04 服务器 AWS 上的 TLS
policy-rate-limit“版本”:1.0.1.1-2
我在配置文件中提供了 mysql 数据库详细信息,我找到该文件:/etc/policyd-rate-limit.yaml
并确保在变量中选择了 mysql,backend: 1
然后配置 postfix(版本 3.6.4-1ubuntu1.1)以将其用作smtpd_client_restriction
我根据“Rust”文档页面创建了一个数据库这里由于缺乏官方文档,policy-rate-limit
我发送了一封测试电子邮件,/var/log/syslog
内容如下:
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: connection from
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: request=smtpd_access_policy
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: protocol_state=RCPT
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: protocol_name=ESMTP
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: client_address=***.***.***.***
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: client_name=****************
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: client_port=27370
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: reverse_client_name=****************
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: server_address=***.***.***.***
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: server_port=587
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: helo_name=smtpclient.apple
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: sender=****************
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: recipient=****************
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: recipient_count=0
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: queue_id=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: instance=2300.64da7642.a2eda.0
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: size=0
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: etrn_domain=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: stress=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: sasl_method=PLAIN
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: sasl_username=****************
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: sasl_sender=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: ccert_subject=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: ccert_issuer=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: ccert_fingerprint=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: ccert_pubkey_fingerprint=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: encryption_protocol=TLSv1.2
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: encryption_cipher=ECDHE-RSA-AES256-GCM-SHA384
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: encryption_keysize=256
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: policy_context=
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: 000/010 hit since 60s
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: 000/150 hit since 86400s
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: insert id **********@my-domain.com
Aug 14 18:45:22 AWS-EC2 policyd-rate-limit[8782]: action=dunno
所以我可以看到insert id **********@my-domain.com
,但是当我去检查数据库时,却没有我预期的东西!
我记得在安装时policy-rate-limit
,我也有以下几行:
Suggested packages:
python3-mysqldb python3-psycopg2
...
/usr/lib/python3/dist-packages/policyd_rate_limit/utils.py:88: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
self._config = yaml.load(f)
You need to install the python3 module MySQLdb to use the mysql backend
但问题是我没有使用policy-rate-limit
python,也没有从 pip 安装它。我使用的是独立版本。
我不想从配置文件中设置用户限制。我需要 mysql 数据库。为 python 安装 mysql 非常麻烦,因为我有来自 pyenv 的 python 3.10。它有依赖性问题,无法使用我找到的所有解决方法来解决
更新:policyd-rate-limit --clean
我按照 Rust 文档页面删除了数据库表。按照 pip 说明 运行后,我不再收到缺少 mysql 的错误,sudo apt-get install python3-mysqldb
我必须将文件转换/var/lib/policyd-rate-limit/db.sqlite3
为 mysql 并运行它,这样就可以创建所需的正确数据库表“mail_count”。
我还在配置文件中临时启用了报告功能,它还创建了另一个名为“limit_report”的表,
现在--clean
标志像 charm 一样运行。
但“插入”仍然没有像我预期的那样将任何东西放入数据库中。(或者我的预期错了?)