AdvertCN - 广告中国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

 谷歌+Bing+TT+MSN官方代理 
⚡️按条S5代理⚡️静态⚡️独享⚡️5G⚡️最干净<Wifi住宅+5G移动>IP代理指纹浏览器,就用AdsPower
Mediabuy⚡️玩家开户首选【鲁班跨境通-自助充值转账】FB/GG/TT❤️官方免费开户Affiliate 全媒体流量资源⚡️
Taboola/Outbrain /Bing⚡️一级代理开户投流-7*24h❤️人工在线【官方】❤️搜索套利广告开户独立站⚡️开户投放
DuoPlus专注打造跨境电商云手机E.PN 虚拟卡BINOM TRACKER 60% OFF!比Adplexity还好用的Spy工具
MediaGo+Taboola+Ob开户百度国际MediaGo⚡️让产品狂奔全球百度国际,高点击转化,快速放量百度国际MediaGo,独家原生流量
ADPLEXITY + ADVERTCN7200W全球动态不重复住宅IP代理虚拟信用卡+独立站收款全球虚拟卡, 支持U充值
Facebook 批量上广告尤里改 - FB 稳定投放免费黑五教程(持续更新、欢迎交流)FB 三不限源头 - 自助下户充值转款
各种主页、账单户、BM户(优势)⚡️个人户,bm户不限额,账单户一手BM分享户不限额9Proxy ⚡️ $0.04/IP, 无限带宽
IPCola原生住宅IP⚡️$2.1/条双ISPFB二三解0.1元一个虚拟卡|PTM星际卡FB专用虚拟卡
Google、Bing官方总代  联盟流量开户FB账号资源/稳定靠谱/运行5年啦FB开户代投/三不限/白名单广告位出租
查看: 5671|回复: 0

Qmail下载、安装、配置、全程详解三

[复制链接]

26

主题

148

广告币

188

积分

初级会员

Rank: 2

积分
188
发表于 2013-7-24 05:33:58 | 显示全部楼层 |阅读模式
接上回

多主机名

    如果你的主机名已知配置了多个名字, 例如, 所有的来自[email protected] 的地址也可以被写成 [email protected] 或者 [email protected], 那么你就必须告诉 qmail 哪一个地址是它应该本地传送的地址, 哪一个地址是它应该接受的远程主机发送的地址.

    如果要这样作, 只要把所有的名字加入下面两个控制文件就行了:
    rcpthosts, 这个文件通知 qmail-smtpd 接收这个主机可以接受的地址. 还有
    locals, 这个文件通知 qmail-send 哪些地址是本地传送地址.

给 qmail-send 发送一个HUP(挂起)信号来通知它重新读取 locals文件. 如果你使用的是本文的 qmailctl 脚本, 那么运行下面的命令就可以了:

    qmailctl reload

虚拟域

虚拟域和上节提到的多主机名类似, 不过这里面有一些很重要的不同之处. 首先如果 example.net 是 virtual.example.net 虚拟域的宿主主机, 那么一个发送给 [email protected] 的邮件将不会被发送给即使是同一个邮箱的 [email protected], 这里虚拟域的名字空间是冲突的.

使用 qmail, 虚拟域将在 virtualdomains 文件里面配置, 文件内由型如下面这行的条目构成:
user@domain:prepend

qmail 转换 user@domain 为 prepend-user@domain 并且将这个转换后的名字作为本地域一样对待. user@ 这个部分是可选的, 如果缺少这个部分, 这个名字将匹配所有 @domain 域下面的地址.

回到上文的 example 剧情里面, 如果 example.net 邮件管理员希望创建 virtual.example.com 虚拟域, 并且将这个域置于用户 john 的管理之下, virtualdomains 文件下面的虚拟域条目应该这样写:
virtual.example.com:john

这样, 发往 [email protected] 的邮件将会被修改为发往 [email protected] , 然后进行本地传送. 更多信息, 请参见 .qmail 小节, 以及 扩展地址 细目. 那里将介绍 john 如何管理他的虚拟域.

使用多主机名的时候, 所有的虚拟域都必须在rcphosts列出, 这样 qmail-smtpd 才会知道那些地址的邮件才应该被接受. 但是不像多主机名方式, 虚拟域不可以在locals里面设置相应条目.

修改 virtualdomains文件之后, 发送给 qmail-send 一个 HUP (挂起) 信号, 通知它重新读取配置文件. 如果你使用本文的 qmailctl 脚本, 你可以运行如下命令:
qmailctl reload

同时, 不要忘了在 rcpthosts 里面增加虚拟域条目.
注意: 必须设置域名服务器(DNS)的邮件交换器(MX)记录, 以使虚拟域指向正确的邮件服务器.
别名

qmail的标准别名机制是由qmail的本地传送机制自然派生出来的.qmail-local 试图传送地址为 localpart@Host 的邮件给本地叫做 localpart 名字的用户. 如果没有匹配这个名字的用户存在, 邮件将会被发送给别名 alias 用户, 别名用户是qmail系统里面通常主目录位于 /var/qmail/alias 的伪用户.

举例, 如果你想要创建一个叫做 [email protected] 的别名, 这个别名用户将把上文收到的所有无主邮件转发给用户 tom, 在我们举例的 example.com 上, 这样作的方式是: 作为 root 用户, 运行下面的命令:

    echo \&tom > /var/qmail/alias/.qmail-info

注意由于别名在 qmail 里面的实现方式, 别名是不能够优先与一个已知用户的传送的. 例如, 如果 rachel
是一个普通用户, 那么~alias/.qmail-rachel 别名是无效的.

关于 qmail-users

qmail-users 是一个分发地址给用户的系统. 由 /var/qmail/users 下的一系列文件构成. assign 文件是一个分配表. 有两种分配表的格式: 单体方式和通配符方式

一个单体分配表看起来是这个样子的:

=address:user:uid:gid:directory:dash:extension:

这个表的含义是: 作为 address 地址接收的邮件将会被使用用户 user 来传送, 使用指定的 uid 和 gid, 并且由 directory/.qmaildashextension 这个文件决定邮件如何被传送.

通配符分配表看起来是这个样子的:

+prefix:user:uid:gid:directory:dash:prepend:

这个表的含义是: 作为 prefixrest 地址里面匹配的邮件地址接收的邮件, 将会被使用用户 user 来传送, 使用指定的 uid 和 gid, 并且由 directory/.qmaildashextension 这个文件决定邮件如何被传送.
qmail-user 程序

qmail-user 有两个辅助程序: qmail-newu 和 qmail-pw2u.

qmail-newu 程序处理 assign 文件并且在 /var/qmail/users 下生成一个名为 cdb 的静态数据库(CDB)文件. CDB是二进制格式, 所以在内含数千条分配表的情况下, 仍然可以被 qmail-lspawn 快速访问.

qmail-pw2u 把系统用户数据库 /etc/passwd 转换为一系列适于assign 使用的分配表. qmail-pw2u 使用一组文件来修改翻译规则.

    include: 要包括的用户
    exclude: 不要包括的用户
    mailnames: 用户的可替换的"邮件帐户名字"
    subusers: 用户控制的额外的地址, 使用可选的 .qmail 扩展方式
    append: 其他分配表
    注意: 如果你使用qmail-pw2u, 不要忘记在增加和删除用户, 或者改变UID和GID之后, 重新运行一下qmail-pw2u和qmail-newu. 标准的运行次序如下所示:

        qmail-pw2u </etc/passwd >/var/qmail/users/assign
        qmail-newu

    mbox 格式邮箱的邮件投递

    mbox 是标准的UNIX邮箱格式, 在一个独立文件内存放多个邮件, 每个邮件由一个"From" 的开头的行开始. 这一行看起来像一个邮件头字段, 不过那不是邮件头, 那仅仅是传送代理添加的, 作为一个标记,便于找到每个邮件的开始部分.

    例如:
    ./Mailbox

    这个设置表示邮件将被追加到 $HOME/Mailbox 文件上, 每个邮件由"From"开头的行引领. 一个只存放了一个邮件的, 简单的mbox 的邮箱看起来是下面这个样子的:
    From [email protected] Thu May 13 18:34:50 1999 Received: (qmail 1287205 invoked from network); 13 May 1999 18:34:49 -0000 From: [email protected] To: [email protected] Subject: hey What's up?

    第一行是 qmail 传送邮件时添加的.
    maildir 格式邮箱的邮件投递

    maildir 是 Dan Bernstein 为了表明 mbox 邮箱格式的缺陷而创造的格式. 一个 maildir 邮箱包含三个子目录, new, cur, 和 tmp. 在各个子目录下的每个邮件根据状态的不同分别存储在各个子目录下独立的文件中. 未读邮件存储在new中, cur存储已读邮件, tmp 是为那些正在传送过程中的邮件使用的. maildir 的man手册页详细描述了maildir格式的细节.

    maildir 格式的优点之一就是保证邮件传输的安全, 即使在不锁定情况下, 不同邮件代理同时更新邮件, 也能保证传输的可靠. 这意味着maildir 邮箱可以安全的建立在以NFS性质挂接的文件系统上.

    例如:

        ./Maildir/

    这个设置表示将把邮件存储在 $HOME/Maildir 下面的 maildir 格式的邮箱.
    注意: qmail-local 可以将邮件传送到 maildir 格式邮箱, 但是不能创建这种邮箱. 你需要使用qmail 附带的maildirmake 程序来创建 maildir 格式邮箱. 例如: "maildirmake ~/Maildir". 不过要确定你使用maildir的拥有者运行maildirmake, 而不是 root 用户. 另外的方式, 你的 useradd 和 adduser 命令可能支持"skeleton"骨架目录, 例如: /etc/skel, 然后可以直接复制这个目录给所有新用户.
    扩展地址

    qmail 支持用户控制扩展地址. 在基本地址 [email protected] 上扩展的扩展地址为: [email protected] ,用户同样可以接收发往扩展地址的邮件. 在本节其余部分, 我们讨论的范围都是在本地系统上, 所以我们将不再使用"@hostname.domain" 部分.

    给用户 username 的邮件传送指令由 ~username/.qmail 文件指定. 对于型如username-extension 的扩展地址的传送指令由用户目录下的~username/.qmail-extension 文件指定.

    举一个例子, [email protected] 这个扩展地址的传送将由文件 ~dave/.qmail-lwq 来控制.

    扩展地址可以拥有多个字段, 例如 dave-list-qmail 这个扩展地址, 由 ~dave/.qmail-list-qmail 来控制. 在这个例子里面, dave-list-qmai 这个地址被用来订阅 qmail 的邮件列表, ~dave/.qmail-list-qmail 则负责归档这个列表的邮件到单独的邮箱里面.

    .qmail 文件可以用-default 后缀进行匹配。 所以 dave-list-qmail 可以由 ~dave/.qmail-list-default 操作. 这个文件可以一对多方式用一个.qmail文件控制所有型如 dave-list-加上任何后缀的地址. 注意 dave-list 不能由 ~dave/.qmail-list-default 控制, 因为在"list"后面没有"-".

    qmail 会使用最接近的匹配方式. 例如, qmail在传送一个标志着送给dave-list-qmail这个地址的邮件时, 会按照下面顺序查找.qmail控制文件, 并按照最先匹配的.qmail文件传送这个邮件.

        .qmail-list-qmail
        .qmail-list-default
        .qmail-default

    如果没有找到相匹配的.qmail文件, 传送失败, 并且将邮件反弹给发送者.
    发送邮件

    邮件用户通常并不直接发送邮件. 典型的方式是利用邮件用户代理(Mail User Agent, MUA)程序, 例如 pine 或者 mutt 编写并发送邮件. MUA程序调用MTA传送邮件. 这个处理邮件到MTA的调用过程称为注入(injection).

    有两种方式完成注入, 一种利用SMTP协议(Simple Mail Transfer Protocol, SMTP), 或者利用MTA提供的的特定程序.
    SMTP 方式

    MUA程序可以使用TCP协议连接到标准的SMTP协议端口25, 可以是本地主机或者指定的邮件服务器. MUA和MTA后续进行的回话导致两个结果:
    邮件被传送给MTA, 或者
    返回一份错误报告给MUA

SMTP没有身份认证的机制, 所以发送邮件的过程是不要求用户名和密码的. 但是, 大多数MTA拒绝接收既不是来自本地用户也不是发送给本地用户的邮件的. 如果一个恰当的格式的邮件被MTA拒绝, 最大的可能就是转信限制造成.
/var/qmail/bin/sendmail 文件

很多年以来, UNIX MTA一直都是Sendmail. 由于Sendmail的应用十分普遍, 许多程序员假定它是默认的MTA. 结果, Sendmail的本地注入机制成为标准的本地邮件注入的应用编程接口(Application Programmer's Interface, API). qmail 以及其他非Sendmail的MTA因此也提供一个sendmail程序应用于本地注入方式上, 它的工作方式和真正的Sendmail 的 sendmail程序一样.

qmail 的用于替换Sendmail相应部分的 sendmail 程序, 通常位于 /var/qmail/bin/sendmail, 典型的Sendmail的程序位于下面这些位置:

    /usr/lib/sendmail
    /usr/sbin/sendmail

在qmail系统里面, 使用命令"ls -l path-to-sendmail"将会显示出, sendmail实际上是一个指向/var/qmail/bin/sendmail 的符号连接.

  $ ls -l /usr/lib/sendmail
  lrwxrwxrwx   1 root     root           29 Feb 19 11:04 /usr/lib/sendmail -> /var/qmail/bin/sendmail

qmail-inject

除了模仿 sendmail 的 API之外, qmail 也拥有自己的注入程序: qmail-inject. 实际上, qmail提供的sendmail 程序只是一个qmail-inject的外壳程序.

作为一个API标准, sendmail可能更好用, 因为它使用广泛. qmail的API由qmail-inject提供, 只能在qmail系统下运行, 而sendmail接口几乎是全球通用的.

举一个例子, 可以这样发送一个空白邮件给 [email protected]:
echo To: [email protected] | /var/qmail/bin/qmail-inject

原文太长,我缩减了一些,主要关键的内容都保留,大家先看,还有其他关于Qmail的内容也停好,如果大家有兴趣,我会在发一些,不过,自己能力有限,着重于分享知识却不能解惑答疑,抱歉了.



相关帖子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们|联系我们|DMCA|广告服务|小黑屋|手机版|Archiver|Github|网站地图|AdvertCN

GMT+8, 2024-11-6 07:52 , Processed in 0.043220 second(s), 13 queries , Gzip On, MemCache On.

Copyright © 2001-2023, AdvertCN

Proudly Operating in Hong Kong.

快速回复 返回顶部 返回列表