Error adding MX record

Discussion in 'Installation/Configuration' started by catdude, May 8, 2008.

  1. catdude

    catdude ISPConfig Developer ISPConfig Developer

    I'm running ISPConfig 2.2.13 on Debian Sarge. I've got several hundred customers/domains running, for the most part smoothly.

    One of my customers is asking that I modify his MX records to point to a machine other than ISPConfig. We are doing this for several other customers as well - we offer a service called Premium Spam Control, and several of our customers have their e-mail filtered through PSC.

    When configuring mail this way, we set the MX records to point to rb.<our domain>.com and fr.<our domain>.com. No problem - as I said, we are doing that for several customers. This latest customer, though, is a problem. When I set up an MX record for fr at priority 30, the record is accepted. When I attempt to add an MX record for rb at priority 20, I get an error reading " This or a similar MX Record does already exist in this zone." Examining the MX records for this domain does not show any MX records other than the one pointing to fr. I have emptied the Admin recycle bin and the reseller level recycle bin.

    I tried looking through the database records, but I haven't yet figured out which tables link the dns_mx table to the other required tables.

    Can someone document for me how the dns_mx table links to the other tables that get involved here? I'm familiar with tracing info through isp_isp_domain, isp_dep, etc, I'm just not sure what tables to use and what fields tie them together in the case of DNS issues.
     
  2. falko

    falko Super Moderator ISPConfig Developer

    The other important tables in this matter are dns_dep, dns_nodes, and dns_isp_dns.
     
  3. catdude

    catdude ISPConfig Developer ISPConfig Developer

    Thanks, that's what I needed!

    Here's what I've found by digging into the tables.

    The domain in question has two entries in dns_dep with doctype_id of 1020: child_doc_id of 2061 and child_doc_id of 3377. Going in to dns_mx:
    mysql> select * from dns_mx where doc_id = 2061 \G
    *************************** 1. row ***************************
    doc_id: 2061
    doctype_id: 1020
    host:
    prioritaet: 30
    mailserver: rb.<our domain>.net
    1 row in set (0.00 sec)

    mysql> select * from dns_mx where doc_id = 3377 \G
    *************************** 1. row ***************************
    doc_id: 3377
    doctype_id: 1020
    host:
    prioritaet: 40
    mailserver: fr.<our domain>.net

    This would correspond to the behavior I'm seeing in ISPConfig's web interface: I get an error message when trying to add an MX record pointing to rb.

    However, the web interface shows only the MX record for fr, and the bind9 zone file (pri.<cust domain>.com) contains only one MX record, fr.

    So my current question is, how can I force a rebuild of the bind zone file? Will resetting the status in dns_isp_dns force the rewrite?

    And out of curiosity, has anyone seen this problem before or have any idea how it might have occurred? Having the MX record for Rb not show up in the web interface has me puzzled.
     
  4. falko

    falko Super Moderator ISPConfig Developer

    Set the status field to u and run
    Code:
    touch /home/admispconfig/ispconfig/.run
     
  5. catdude

    catdude ISPConfig Developer ISPConfig Developer

    I did so, and that did force a rebuild of the zone file for the domain in question.

    However, I'm still seeing the same issue.

    Using "DNS Manager" in ISPConfig and viewing the records for this domain, I see one MX record defined - host Fr, at priority 40.

    I found the doc_id in dns_isp_dns by doing "SELECT * FROM dns_isp_dns WHERE dns_soa = '<customer_domain>.com'; this shows me the doc_id is 2021. I then did "select * from dns_dep where child_doctype_id = 1020 and parent_doc_id = 2021 and parent_doctype_id = 1016 \G" which produced:
    *************************** 1. row ***************************
    dep_id: 6201
    userid: 1
    groupid: 0
    parent_doc_id: 2021
    parent_doctype_id: 1016
    parent_tree_id: 8231
    child_doc_id: 2061
    child_doctype_id: 1020
    child_tree_id: 8251
    status: 1
    *************************** 2. row ***************************
    dep_id: 12257
    userid: 0
    groupid: 2
    parent_doc_id: 2021
    parent_doctype_id: 1016
    parent_tree_id: 8231
    child_doc_id: 3377
    child_doctype_id: 1020
    child_tree_id: 15327
    status: 1
    2 rows in set (0.00 sec)

    Exploring those 2 entries produces:
    mysql> select * from dns_mx where doc_id = 2061 \G
    *************************** 1. row ***************************
    doc_id: 2061
    doctype_id: 1020
    host:
    prioritaet: 30
    mailserver: rb.<our domain>.net
    1 row in set (0.00 sec)

    mysql> select * from dns_mx where doc_id = 3377 \G
    *************************** 1. row ***************************
    doc_id: 3377
    doctype_id: 1020
    host:
    prioritaet: 40
    mailserver: fr.<our domain>.net
    1 row in set (0.00 sec)

    So, my confusion at present is why DNS Manager only shows one MX record. I understand why I can't add a new MX record pointing to Rb; it's because there's already one in the database.

    For now I'm working around this issue by manually editing the customer's zone file to add the MX record for Rb. But I'd like to figure out why this is happening, in case it manifests itself on another domain in the future. Any ideas?
     

Share This Page