您的位置:首页 > 其它

6.7.2 qmgr_message_read函数:创建QMGR_MESSAGE结构体

2016-04-07 15:16 232 查看
qmgr_message_alloc-> qmgr_message_create->qmgr_message_read函数从文件系统读取邮件信息。由于邮件信息采用record格式存放,所以使用if语句链根据record格式类型读取信息。这和cleanup模块从流(unix域协议)中读取smtpd模块传入的信息类似。

发件人信息记入QMGR_MESSAGE->sender字段中:

if(rec_type == REC_TYPE_FROM) {
if (message->sender == 0) {
message->sender =mystrdup(start);


收件人信息用RECIPIENT结构体表示,被添加到QMGR_MESSAGE结构体RECIPIENT_LISTrcpt_list字段中:

if (rec_type== REC_TYPE_RCPT) {
/* See also below for code settingorig_rcpt etc. */
if (message->rcpt_offset == 0) {
message->rcpt_unread--;
recipient_list_add(&message->rcpt_list,curr_offset,
dsn_orcpt ? dsn_orcpt : "",
dsn_notify ? dsn_notify : 0,
orig_rcpt ? orig_rcpt : "",start);


这里仅是将原信中提供的收件人地址读取并记录下来。由于6.3中MTA改写收件人地址机制的存在,接下来需要调用qmgr_message_reslove函数解析收件人地址,得到真正的最终收件人地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: