用于sql数据库的socketmap脚本
socketmap-sql的Python项目详细描述
用于与SQL数据库接口的SocketMap脚本。
为什么?
我有很多freebsd服务器,其中一个打算作为我的主服务器 MailServer(当前和剩余的一个成为辅助MailServer)。 问题是我正在使用postfix,并且非常努力地坚持 预编译的包而不是使用端口,而freebsd上的postfix缺少 绑定到数据库。在我的例子中,我希望能够使用sql数据库。
配置格式
配置文件是包含两种类型节的ini文件。
首先是[database]部分,它提供数据库连接的详细信息。 driver字段指定要使用的驱动程序;如果省略,则默认值为 到sqlite3。其余字段将传递给驱动程序的connect() 功能。
[database] driver = sqlite3 database = /path/to/sqlite.db
其他部分从table:开始,并表示要查询的虚拟表。 有两个字段:transform(可选)和query(必需)。
transform字段提供要应用于查询的转换的名称 参数在查询中使用之前。默认情况是接受 参数原样(all)。其他值可以是对python函数的引用 在'module:function'格式中,local仅用于本地部分,domain用于 地址的域部分和split将电子邮件地址一分为二。 它必须返回一个列表或元组,给出要在 查询。
query字段提供一个用于生成合成表的sql查询。 使用数据库驱动程序文档中指定的占位符。
用法
使用:
socketmap-sql --config /path/to/config.ini
如果不提供–config标志,则默认为 /etc/socketmap-sql.ini。
后缀
此脚本将由postfix的spawn机制执行,这意味着 它读取输入并将输出分别写入stdin和stdout。
假设您已经在/usr/local/libexec中安装了脚本,则添加 跟随master.cf:
sockmapd unix - - n - 1 spawn user=nobody argv=/usr/local/libexec/socketmap-sql
兼容性
该脚本只适用于Python3.3+,尽管它可以用于Python 2.7适度修补。