Sendmail:如何获取电子邮件地址的明确列表

Sendmail:如何获取电子邮件地址的明确列表

我对 sendmail 作为完整的 MTA 不是很熟悉,但我需要获取电子邮件地址列表。

我搜索了一下,然后我检查了一下/etc/mail/aliases(里面有一些,但主要用于黑莓转发,因为看起来不完整)和virtusertable(空的),据我所知,邮件已发送给本地用户。但是,里面有很多本地 UNIX 用户,根据修改日期,我猜很多都是老用户。

当然,一定有另一个本地部分(电子邮件地址)到本地用户的映射,或者有更好的方法来判断哪些电子邮件地址是活动的(或者至少是可以运行的;我可以处理一些不活动的地址,因为显然,丢失一些地址会更糟)。

答案1

根据您的软件,日志是查找实际正在使用的 ID 的好地方。这还取决于您保留邮件日志的时间。使用一些脚本魔法,您应该能够通过电子邮件 ID 获得计数。

Sendmail 通常使用标准 mail.log 文件来记录邮件传递。一旦您找到适当的日志,选择和解析传递消息就不难了。

您将需要过滤掉发送到其他系统(不包括您的黑莓服务器)的消息。

通常,特权帐户(UID < 500 或 1000)不应接收电子邮件。除此之外,您的身份验证系统可接受的任何 ID 都应该有效。尝试运行getent passwd以获取用户列表。

各种别名文件用于重定向传递。许多别名用于必需的 ID(如abuse和)postmaster,或系统 ID(如root许多别名可能指向的 ID)。您将需要过滤掉系统 ID,并在新服务器中配置所需的 ID。

答案2

我假设您正在使用 Linux 或 UNIX。

Sendmail 将允许向 /etc/passwd 中存在的所有用户帐户发送邮件(并且根据身份验证方法,您需要添加 NIS,可能还有 AD 用户)。此外,别名文件中存在的那些用户可以是有效的电子邮件地址。顺便说一句,为了获取别名列表,我使用 praliases(在 RH 系统上可用)。

顺便说一句,我注意到 /etc/passwd 和 NIS 帐户中禁用密码的用户仍然可以收到电子邮件,我个人并不了解 AD 用户的情况。

还有另一个复杂因素,所有这些“用户”都可以在本地接收 /etc/mail/local-host-names 中列出的所有域名。

话虽如此,我还是有点困惑,不知道你想要什么。

您寻找的信息肯定存在,但不在一个文件中,也不在一个命令中。

答案3

我在 *nix 发行版中看到过这样的例子,其中同时存在 /etc/aliases 和 /etc/mail/aliases - 而后者实际上并未使用(也没有到 /etc/aliases 的链接)。看看 /etc/aliases 是否存在并且其中可能有更多信息也无妨...

相关内容