如何从根域

时间:2016-04-16 17:02:40

标签: dns mailgun

Mailgun建议为子域创建DNS(TXT,MX,..)记录,但是稍后配置可以通过根域发送和接收状态。我在我的注册商和Mailgun(添加域名,设置路由等)中为mail.example.com创建了所有必要的步骤。 我现在可以收到并发送电子邮件到配置的example@mail.example.com。

我现在需要更改哪些内容才能在example@example.com上发送和接收? 注册商,邮件枪和gmail的smtp设置(通过mailgun从gmail发送)有哪些必要的更改?

非常感谢!

4 个答案:

答案 0 :(得分:16)

如果为子域配置Mailgun,则可以通过正确的to变量从主域发送电子邮件。例如,使用Node.js + nodemailer + nodemailer-mailgun-transport

var nodemailer = require('nodemailer'),
    mg = require('nodemailer-mailgun-transport'),
    auth = { api_key: 'foobar', domain: 'mail.example.com' },
    nodemailerMailgun = nodemailer.createTransport(mg({ auth: auth }));

nodemailerMailgun.sendMail({
    from: 'helloworld@example.com',
    to: 'recipient@domain.com',
    subject: 'Hey you, awesome!',
    text: 'Mailgun rocks, pow pow!'
}, someCallback);

或者您可以阅读有关通过API http://codepen.io/lukemeaden/pen/mPGreY发送的其他方法。无论如何,即使您的Mailgun配置为子域名,您也可以从主域发送电子邮件。

但是(!)您的MX记录是针对您的子域配置的,因此您只能在那里接收电子邮件。为了能够接收到您的主域名的电子邮件,请在Mailgun的控制面板中添加您的主域名,例如不是mail.example.com,而是example.com,并在此主域的DNS控制面板中进行相应配置,DigitalOcean的example.com(非子域)DNS的示例配置:

TXT    @                v=spf1 include:mailgun.org ~all
TXT    krs._domainkey   k=rsa; p=MIGfM...blablabla
CNAME  email            mailgun.org.
MX     10               mxa.mailgun.org.
MX     10               mxb.mailgun.org.

请记住,Mailgun没有邮箱功能,如果您有适当的规则集,它只能转发传入的电子邮件。大多数人将其主域名的MX记录委托给更易管理的ESP,如Gmail。 您只能拥有一组域的MX记录,因此您必须选择Gmail或Mailgun。

答案 1 :(得分:3)

你需要使用mailgun-js来实现这个

  1. 需要来自npm的mailgun-js

    var Mailgun = require('mailgun-js');

  2. 2.设置mailgun的选项。即apiKey和域名。

    var options = {
      apiKey: 'YOUR_API_KEY',
      domain: 'YOUR_DOMAIN'
    };
    
    1. 使用这些选项实例化mailgun。

      var mailgun = new Mailgun(options);

    2. 在为其设置所需参数后发送电子邮件。

      var data = {
          //From email
          from: '',
          // Email to contact
          to: 'To Email address',
          // CC email
          ccTo: 'CC address if any'
          // Subject
          subject: 'Mail subject',
          // Email msg
          html: 'email message or html'
      };
      
      // Send email
      mailGun.messages().send(data, callbackFunction() {
      
      });
      

答案 2 :(得分:2)

我只是在短时间内使用Mailgun,但我可以帮助我到目前为止学到的东西。

您可以为Mailgun或Gmail等第三方设置DNS记录。我不认为他们会同时使用两者。我不确定这对路由会有什么影响,因为它不知道该去哪里。

对于您的Mailgun子域,您使用mail.example.com电子邮件地址example1@mail.example.com。我正在运行,但我根本没有创建这样的电子邮件地址。我的电子邮件格式仍为example1@example.com

我将从收到的电子邮件中粘贴此内容,然后根据您提供的示例进行编辑:

  

您似乎已为根域example.com设置了MX记录,但您使用Mailgun的域名是mail.example.com。您需要将主机名从example.com更改为mail.example.com,以便正确路由。

     

由于Mailgun没有邮箱,因此使用Mailgun接收电子邮件需要使用包含指向Mailgun的MX记录的子域以及使用我们的路由功能。理解路由的一种好方法是作为一种复杂的过滤和转发机制。使用路线,您可以:

     
      
  • 将传入的电子邮件转发到其他环境进行存储(例如服务器上的电子邮件地址或端点)
  •   
  • 暂时存储邮件(最多3天)并使用Messages API
  • 检索邮件   
  • 停止处理邮件(即丢弃某些邮件而不是转发或存储邮件)
  •   

答案 3 :(得分:0)

如果您尝试使用Django的Anymail程序包从子域发送Mailgun电子邮件,则需要使用EmailMultiAlternatives对象发送电子邮件并指定电子邮件发件人域,如下所示:

from django.core.mail import EmailMultiAlternatives

msg = EmailMultiAlternatives("Subject", "text body",
                             "contact@example.com", ["to@somedomain.com"])
msg.esp_extra = {"sender_domain": "mg.example.com"}

msg.send()