6.7.2 qmgr_message_read函数:创建QMGR_MESSAGE结构体

来源:互联网 发布:分享做淘宝的经验 编辑:程序博客网 时间:2024/06/06 05:16

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函数解析收件人地址,得到真正的最终收件人地址。

0 0
原创粉丝点击