hMailServer数据库结构以及加密方法,php操作mysql添加数据库
下面先简单说一下这个服务器的一些主要的数据库表:
域名表:hm_domains,这个表保存了服务器中配置的各个域名及其相关属性;
邮件账号表:hm_accounts,这个表保存了所有的邮件账号的各项信息,如所属域名、密码、邮箱大小等;
imap服务的目录表:hm_imapfolders,这个表保存了 imap 服务的各个目录。默认情况下,每建立一个邮件账户,系统都会为这个用户添加一个 imap 目录(收件箱)
这三个表就是我们自己写管理邮件账户页面时,最常用到的表。其它的表,也很简单,如果需要的话,看一下,很容易看懂。
在表 hm_accounts 中保存的密码,不同的账户是可以使用不同的加密算法来加密的。表中保存密码的字段是:accountpassword,而这个密码所使用的加密算法由后面的一个字段的值来决定,这个字段就是:accountpwencryption。当前这个字段的值决定了密码的不同加密算法,下面是其对应关系:
0 -> 用明码来保存密码,即不对密码进行加密;
1 -> 使用 Blowfish 来加密密码。据介绍,这种加密算法并不安全,和用明码保存密码的安全性相差不大;
2 -> 使用 MD5 加密算法来加密密码;
3 -> 使用 SHA256 加密算法来加密密码。这也是 hMailServer 官方推荐的加密算法
参考资料 https://www.iteye.com/blog/lqixv-833194
邮件账号表:hm_accounts
account // id
accountdomainid = '4'; // 常规-域名ID (hm_domains表中domainid值)
accountadminlevel = '0'; // 常规-管理员级别
accountaddress = '888@111.club'; // 常规-地址
accountpassword = md5('123456'); // 常规-加密后密码
accountactive = '1'; // 常规-已启用
accountisad = '0'; // 活动目录-已启用
accountaddomain = ''; // 活动目录-域
accountadusername = ''; // 活动目录-用户名
accountmaxsize = '0'; //常规-大小
accountvacationmessageon = '0'; // 自动回复-已启用
accountvacationmessage = ''; // 自动回复-文本
accountvacationsubject = ''; // 自动回复-主题
accountpwencryption ='2'; // 帐户加密方式 0 1 2 3
accountforwardenabled ='1'; //转发-已启用
accountforwardaddress = '1@111.club'; // 转发-地址
accountforwardkeeporiginal = '1'; //转发-保留原始邮件
accountenablesignature = '0'; // 签名-已启用
accountsignatureplaintext = ''; // 签名-纯文本签名
accountsignaturehtml = ''; // 签名-HTML签名
accountlastlogontime = $time; // 常规-最后登录时间
accountvacationexpires = '0'; //自动回复-自动过期启用
accountvacationexpiredate = $time; // 自动回复-自动过期日期
accountpersonfirstname = ''; //名
accountpersonlastname = ''; // 姓
imap服务的目录表:hm_imapfolders
folderid 文件夹id
folderaccountid 邮件账号id(上表中account值)
folderparentid 文件夹父ID
foldername 文件夹名
folderissubscribed 已订阅文件夹
foldercreationtime 文件夹创建时间
foldercurrentuid 邮件id
我自己需要用PHP写一个简单的添加用户接口,PHP代码如下
<?php
$servername = "127.0.0.1";
$username = "";
$password = "";
$dbname = "";
$time = date('Y-m-d h:i:s', time());
$accountdomainid = '4'; // 常规-域名ID
$accountadminlevel = '0'; // 常规-管理员级别
$accountaddress = '888@jgdwl.cn'; // 常规-地址
$accountpassword = md5('123456'); // 常规-加密后密码
$accountactive = '1'; // 常规-已启用
$accountisad = '0'; // 活动目录-已启用
$accountaddomain = ''; // 活动目录-域
$accountadusername = ''; // 活动目录-用户名
$accountmaxsize = '0'; //常规-大小
$accountvacationmessageon = '0'; // 自动回复-已启用
$accountvacationmessage = ''; // 自动回复-文本
$accountvacationsubject = ''; // 自动回复-主题
$accountpwencryption ='2'; // 帐户加密方式 0 1 2 3
$accountforwardenabled ='1'; //转发-已启用
$accountforwardaddress = '1@jgdwl.cn'; // 转发-地址
$accountforwardkeeporiginal = '1'; //转发-保留原始邮件
$accountenablesignature = '0'; // 签名-已启用
$accountsignatureplaintext = ''; // 签名-纯文本签名
$accountsignaturehtml = ''; // 签名-HTML签名
$accountlastlogontime = $time; // 常规-最后登录时间
$accountvacationexpires = '0'; //自动回复-自动过期启用
$accountvacationexpiredate = $time; // 自动回复-自动过期日期
$accountpersonfirstname = ''; //名
$accountpersonlastname = ''; // 姓
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "INSERT INTO hm_accounts (accountdomainid, accountadminlevel, accountaddress, accountpassword, accountactive, accountisad, accountaddomain, accountadusername, accountmaxsize, accountvacationmessageon, accountvacationmessage, accountvacationsubject, accountpwencryption, accountforwardenabled, accountforwardaddress, accountforwardkeeporiginal, accountenablesignature, accountsignatureplaintext, accountsignaturehtml, accountlastlogontime, accountvacationexpires, accountvacationexpiredate, accountpersonfirstname, accountpersonlastname)
VALUES('$accountdomainid', '$accountadminlevel', '$accountaddress', '$accountpassword', '$accountactive', '$accountisad', '$accountaddomain', '$accountadusername', '$accountmaxsize', '$accountvacationmessageon', '$accountvacationmessage', '$accountvacationsubject', '$accountpwencryption', '$accountforwardenabled', '$accountforwardaddress', '$accountforwardkeeporiginal', '$accountenablesignature', '$accountsignatureplaintext', '$accountsignaturehtml', '$accountlastlogontime', '$accountvacationexpires', '$accountvacationexpiredate', '$accountpersonfirstname', '$accountpersonlastname');";
if (mysqli_query($conn, $sql)) {
echo "账号密码插入成功";
$folderaccountid = mysqli_insert_id($conn);
$sql = "INSERT INTO hm_imapfolders (folderaccountid, folderparentid, foldername, folderissubscribed, foldercreationtime, foldercurrentuid) VALUES ('$folderaccountid', '-1', 'INBOX', '1', '$time', '0')";
if (mysqli_query($conn, $sql)) { echo "收件箱插入成功";}else{echo "Error: " . $sql . "<br>" . mysqli_error($conn);}
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
hMailServer数据库结构以及加密方法,php操作mysql添加数据库相关推荐
- PHP事务数据库写法,PHP 操作 MySQL 执行数据库事务
$mysqli=new mysqli();//实例化mysqli $mysqli->connect('localhost','root','admin','test'); if(mysqli_c ...
- MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南
MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库. 有关 MySQL 远程管理软件,你可以选择 ...
- 安全如何为数据库选择最佳加密方法
介绍 加密是对消息或信息进行编码以便只有授权方可以看到它的过程.加密已经进行了几个世纪.例如,在第二次世界大战中,盟军使用不成文的纳瓦霍语发送加密代码,日本人无法解码. 今天,加密变得更加重要,因为我 ...
- python操作数据库的几种方法_python对mysql数据库操作的三种不同方式
原标题:python对mysql数据库操作的三种不同方式 |转载自:博客园 |原文链接:http://www.cnblogs.com/mryrs/p/6951008.html 先要说一下,在这个暑期如 ...
- 根据数据库表gengxin实体类_Python学习第四十八天记录打call:SQLALchemy操作MySQL关系型数据库...
1.SQLALchemy使用 安装 pip install sqlalchemy: SQLAlchemy是Python编程语言下的一款开源软件,是PythonSQL工具包和对象关系映射器,它为应用程序 ...
- c++访问数据库代码示例 occi_使用Python操作SQL Server数据库
先说一下SQL Server 如果有条件可以使用远程连接或者TeamViewer等工具,操作带GUI的数据库管理器,实施起来可以很省心.可以直接查看结果,模板化查询甚至提示语句错误等. 如果是使用li ...
- 数据库优化查询的方法以及大访问量到数据库时的优化
一.数据库优化查询的方法 1.使用索引: 应尽量避免全表扫描,首先考虑在where 以及 order by ,group by 涉及的列上建立索引 2.优化SQL语句: 1>通过explai ...
- 怎么用php操作mysql删除数据库代码_如何使用php操作mysql的增删改查?
php操作mysql的增删改查方法:1.插入语句[insert into 数据表名(字段1,字段2,....) values("值1","值2",..)]:2. ...
- php mysqldb 数据库切换,Python MySQLdb模块连接操作mysql数据库实例
mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...
最新文章
- 我们距离AI编程还有多远?
- 算法导论之每对顶点间的最短路径
- 如何在window下杀死进程?
- python获取字符串首字母_[Python] Python 获取中文的首字母 和 全部拼音首字母
- python调用opencv代码_Python调用OpenCV实现图像平滑代码实例
- 华为和荣耀蓝牙耳机为什么那么贵?
- Jquery事件委托之Safari
- Soft Actor Critic算法论文公式详解
- 空洞卷积的超详细解释
- macOS | 提取BDrip(封装格式为mkv)中视频与音频并重新封装为mp4
- 关于利用rundll32执行程序的分析
- Windows文件系统过滤驱动开发教程-楚狂人
- 华硕主板Z97-A无法识别intel M.2 NVME固态硬盘的解决方案
- 从零開始学习制作H5应用——V5.0:懊悔机制,整理文件夹,压缩,模板化
- 全连接层替换为卷积层
- jsp计算机网络学习网站
- java 经纬度计算_java 实现经纬度计算
- 五、K3 WISE 开发插件《直接SQL报表开发新手指导 - BOM成本报表》
- vue前后端aes url传参解密再解base64编码
- Linux/Ubuntu操作系统及常用命令
热门文章
- picrust2功能预测-从qiime2安装到数据分析
- kingbase V7/V8大小写敏感问题
- 常用命令_LINUX三剑客之文本处理(一):分别利用awk和sed命令添加列文本
- iOS史上最大漏洞出现 运营商罕见发公告提醒升级
- [Golang]defer详解
- java 获取某个时间点_Java获取昨天、当天、明天的某一个时间点
- 线程学习--pthread--锁链及条件变量
- 在VUE项目中导出excel——简单使用xlsx
- 计算机毕业论文有必要建模吗,本科毕业论文真的有必要吗?
- html禁止单选如何写,单选按钮禁用Html.textbox