使用localhost的端口25发送电子邮件?

时间:2011-08-31 15:53:57

标签: sockets smtp posix

我的网站托管在共享的Linux服务器上,我使用套接字编写了一个C函数来发送自己的电子邮件。只要我发送给自己,电子邮件就会毫无问题地发送。发送给自己的电子邮件没有用户名和密码。但是,如果我将它们发送到gmail等,它们会被拒绝,因为它们会抱怨 localhost

  • 是否可以使用 localhost 发送到gmail等?
  • 如果我在这个过程的哪个阶段需要我的用户名和密码? (wikipedia的示例中未指定,也未在此Perl示例中指定。)

这就是我目前所做的事情:

  1. 使用socket()在localhost上打开端口25。
  2. 从套接字写入/读取以下内容:
  3. 
    HELO localhost
    MAIL FROM: myemail@mydomain.com
    RCPT TO: myemail@mydomain.com
    DATA
    blahblah
    QUIT
    

2 个答案:

答案 0 :(得分:1)

你真的应该发送你的主机名,而不是localhost。 许多服务器将拒绝具有无意义主机的消息,来自与信封域无关的服务器的消息,以及存在于许多DNSRBL之一中的服务器。

本地策略也可能禁止邮件中继,您可能需要向您的托管服务提供商寻求合适的邮件中继。

服务器间邮件传递通常不需要身份验证。

您可能需要考虑使用libsmtp等库来处理协议详细信息。

答案 1 :(得分:0)

目标服务器执行reverse DNS lookup以确定域名是否与SMTP服务器的IP相关联。

例如,如果您发送电子邮件为admin@example.com,目标服务器将执行反向DNS查找,以确定您的服务器的IP是否与({1}}相关联。

我建议阅读Forward-confirmed reverse DNS