While trying to configure mail servers, you might want to verify if your MX records are properly setup. This article will show you how to do MX lookup using command-line interface.
In case you don’t know about MX record, here is a simple explanation.
MX record is an entry defined in the DNS zone configuration to determine what mail server is responsible for handling domain’s email. For that, you should configure at least one MX record in order to receive email for your domain.
Furthermore, you can add many MX records, where each record should point to a different mail server. It is to handle load-balancing on your email infrastructure. However, it is still fine to have only one mail server.
Using nslookup utility
After adding MX record into DNS zone, you can use the
nslookup utility to verify it.
The syntax of
nslookup for MX lookup is very simple. It is following:
$ nslookup -q=MX DOMAIN_NAME
You need to pass one parameter,
-q to specify which type of nameserver record you want to lookup. In this case, we use
MX for MX lookup.
For example, if you want to lookup MX records for gmail domain, then the command would be:
$ nslookup -q=MX gmail.com
You will see similar results like following:
Non-authoritative answer: gmail.com mail exchanger = 30 alt3.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 10 alt1.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 5 gmail-smtp-in.l.google.com. gmail.com mail exchanger = 40 alt4.gmail-smtp-in.l.google.com.
The last right column of the result is the MX record you’re looking for. Specifically, those are email servers.
You can also access into
nslookup prompt console to make request. The steps are demonstrated in following console logs:
$ nslookup > set type=mx > gmail.com Non-authoritative answer: gmail.com mail exchanger = 40 alt4.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 20 alt2.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 10 alt1.gmail-smtp-in.l.google.com. gmail.com mail exchanger = 5 gmail-smtp-in.l.google.com. gmail.com mail exchanger = 30 alt3.gmail-smtp-in.l.google.com. > exit
To exit the prompt, just type in
exit, you’ll back to the terminal.
nslookup utility is available on most of platforms: Windows, Unix, Linux, BSD, Mac by default, so you don’t have to install it.
Using host utility
nslookup, there is another utility you can use for MX lookup is
Typing the command into terminal, if it’s available you can use it. Otherwise, if you’re on Linux/Unix/BSD, you can install by your install command based on distribution.
Specifically, for Debian-based Linux, ex. Ubuntu, you can use following command:
$ apt-get install host
The syntax of
host utility is as simple as
$ host -t MX DOMAIN_NAME
For example, trying to lookup MX records for gmail domain again using `host`.
$ host -t MX gmail.com gmail.com mail is handled by 5 gmail-smtp-in.l.google.com. gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com. gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com. gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com. gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.
The result should be the same as using
Using dig utility
Another utility that is very useful for MX lookup is
dig. Just make sure it is available on your system.
The way to use
dig is no difference from
nslookup at all. However,
dig provides a pretty much verbose output for nameserver record query.
dig -t mx gmail.com ; <<>> DiG 9.10.6 <<>> -t mx gmail.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9056 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;gmail.com. IN MX ;; ANSWER SECTION: gmail.com. 2104 IN MX 40 alt4.gmail-smtp-in.l.google.com. gmail.com. 2104 IN MX 5 gmail-smtp-in.l.google.com. gmail.com. 2104 IN MX 20 alt2.gmail-smtp-in.l.google.com. gmail.com. 2104 IN MX 10 alt1.gmail-smtp-in.l.google.com. gmail.com. 2104 IN MX 30 alt3.gmail-smtp-in.l.google.com. ;; Query time: 35 msec ;; SERVER: [REMOVED] ;; WHEN: Wed Jan 09 15:38:03 +07 2019 ;; MSG SIZE rcvd: 161
Look pretty much details. However, you can filter to make it output only what we need. Here it is
$ dig +short mx gmail.com 5 gmail-smtp-in.l.google.com. 10 alt1.gmail-smtp-in.l.google.com. 40 alt4.gmail-smtp-in.l.google.com. 30 alt3.gmail-smtp-in.l.google.com. 20 alt2.gmail-smtp-in.l.google.com.
MX lookup is an easy task and should be well-handled if you’re in charge of mail server configuration or DevOps.
nslookup is more commonly used than
dig utility, because it’s available by default on many systems.
If you know any other methods for MX lookup, please share with me in comments. I’d love to know !