I am setting up a zimbra mail server for my home use.

These are the issues am having from my Zimbra admin console.
1)Anytime my MX record check passed, i will not be able to send or receive am email.
2)Anytime my MX record check faild,i will be able to send mail internally and externally but i will not be able to receive mail from another domain.
below are my config file.
cat named.conf.local
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "xyz.com" {
type master;
file "/etc/bind/zones/xyz.com";
};

cat xyz.com
$TTL 3h
@ IN SOA mailserver.xyz.com. root.xyz.com. (
201312061 ; Serial
3h ; Refresh after 3 hours
1h ; Retry after 1 hour
1w ; Expire after 1 week
1h ) ; Negative caching TTL of 1 day
;
IN NS 192.168.1.20
xyz.com. IN MX 10 mailserver.xyz.com.
;;xyz.com. IN A 192.168.1.20
mailserver.xyz.com. IN A 192.168.1.20
mailserver IN A 192.168.1.20

cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
192.168.1.20 mailserver.xyz.com mailserver

# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.20
nameserver 4.2.2.2
nameserver 127.0.0.1
search xyz.com

here is the result of my dig
dig xyz.com mx

; <<>> DiG 9.8.1-P1 <<>> xyz.com mx
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 22839
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;xyz.com. IN MX

;; Query time: 0 msec
;; SERVER: 192.168.1.20#53(192.168.1.20)
;; WHEN: Wed Jan 8 17:18:49 2014
;; MSG SIZE rcvd: 30

dig xyz.com

; <<>> DiG 9.8.1-P1 <<>> xyz.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55784
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;xyz.com. IN A

;; Query time: 0 msec
;; SERVER: 192.168.1.20#53(192.168.1.20)
;; WHEN: Wed Jan 8 17:20:41 2014
;; MSG SIZE rcvd: 30





dig xyz.com any

; <<>> DiG 9.8.1-P1 <<>> xyz.com any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 50729
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;xyz.com. IN ANY

;; Query time: 0 msec
;; SERVER: 192.168.1.20#53(192.168.1.20)
;; WHEN: Wed Jan 8 17:23:14 2014
;; MSG SIZE rcvd: 30

but anytime i include @ IN NS mailser.xyz.com. into my xyz.com file my MX record check passed.

Pls,i need your help.