Beginner's Tips, or "Things I have learned while working on Zimbra Installations"
* 3/6/10 Initial Page Creation
DNS A and MX Records
A mail server requires both an A record and an MX record. Editing these records, while not difficult, needs to be done with great care as you can do a lot of damage if you don't know what you're doing. An A record associates the server name with an IP address. An MX record lets the world know the mail servers associated with a domain.
Every hosting provider has instructions on how to manually edit DNS records, although I recommend calling your provider's tech support line and having them walk you through how to do it properly.
The Zimbra installation script REQUIRES that a new server's MX and A records be accessible during the installation. Failure to ensure proper DNS entries will, quite simply, cause the installation to fail.
Note: once you have made changes to DNS records, you will have to wait up to 48 hours for the changes to propagate across the Internet. In my experience, the changes usually occur within a few hours.
DNS troubleshooting (LINUX)
If you want to see if your DNS records have been updated, there are several tools to help you verify if the changes have propagated. Personally, I use ping, dig, and nslookup. Each command will give you DNS information if used properly. I'm using google for the examples below. Substitute your server name as appropriate.
If you merely want to know if your hostname has an A record, try pinging the fully qualified domain name (Substitute your server name):
> ping www.google.com
64 bytes from vw-in-f105.1e100.net (126.96.36.199): icmp_seq=1 ttl=52 time=12.7 ms
Note that the ping returns an IP address. This should be the address you entered in the A record for your server.
If you want more information, try nslookup, which is installed by default in most Linux distributions. From the command line:
> nslookup www.google.com
Server: 188.8.131.52 Address: 184.108.40.206#53 Non-authoritative answer: www.google.com canonical name = www.l.google.com. Name: www.l.google.com Address: 220.127.116.11 Name: www.l.google.com Address: 18.104.22.168 Name: www.l.google.com Address: 22.214.171.124 Name: www.l.google.com Address: 126.96.36.199 Name: www.l.google.com Address: 188.8.131.52 Name: www.l.google.com Address: 184.108.40.206
Google has a lot of servers, your nslookup will probably return a single address of the form:
> nslookup hamster.com
Server: 220.127.116.11 Address: 18.104.22.168#53 Non-authoritative answer: Name: hamster.com Address: 123.456.789.1
The "Server" and "Address" fields in the first block usually reference your ISP's name server. The "Name" and "Address" fields in the second block are your server.
You can also use nslookup to check your mx records. This requires that you enter three commands at the command line:
> nslookup > set type=mx > google.com
Server: 22.214.171.124 Address: 126.96.36.199#53 Non-authoritative answer: google.com mail exchanger = 10 aspmx.l.google.com. google.com mail exchanger = 40 alt3.aspmx.l.google.com. google.com mail exchanger = 20 alt1.aspmx.l.google.com. google.com mail exchanger = 30 alt2.aspmx.l.google.com. google.com mail exchanger = 50 alt4.aspmx.l.google.com.
You can have as many MX records as you want. The number after "mail exchanger = " is a priority number telling the world that you want them to try the highest priority (lowest number) server first.
Finally, you can use the dig command. I prefer dig, but it isn't always installed by default. Consult the package manager help for your Linux distribution for installation instructions.
To use dig, type at the command line:
> dig www.google.com
; <<>> DiG 9.7.0-P1 <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46678 ;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 86399 IN CNAME www.l.google.com. www.l.google.com. 299 IN A 188.8.131.52 www.l.google.com. 299 IN A 184.108.40.206 www.l.google.com. 299 IN A 220.127.116.11 www.l.google.com. 299 IN A 18.104.22.168 www.l.google.com. 299 IN A 22.214.171.124 www.l.google.com. 299 IN A 126.96.36.199 ;; Query time: 53 msec ;; SERVER: 188.8.131.52#53(184.108.40.206) ;; WHEN: Wed Apr 6 13:15:25 2011 ;; MSG SIZE rcvd: 148
dig returns IP addresses associated with server names, just like nslookup.
If you want to look at MX records for a domain, type just the domain name, not the server name:
> dig google.com mx
; <<>> DiG 9.7.0-P1 <<>> google.com mx ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11063 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;google.com. IN MX ;; ANSWER SECTION: google.com. 600 IN MX 30 alt2.aspmx.l.google.com. google.com. 600 IN MX 40 alt3.aspmx.l.google.com. google.com. 600 IN MX 50 alt4.aspmx.l.google.com. google.com. 600 IN MX 20 alt1.aspmx.l.google.com. google.com. 600 IN MX 10 aspmx.l.google.com.
;; Query time: 53 msec ;; SERVER: 220.127.116.11#53(18.104.22.168) ;; WHEN: Wed Apr 6 13:17:59 2011 ;; MSG SIZE rcvd: 136