2

Ok so I'm trying to forward mail from my ubuntu server (lets call it example.com) to a external gmail account using postfix.

The problem is when I send mail using another gmail and yahoo account to monkey@example.com, and I check var/log/mail.info, nothing shows up.

However when I use sendmail in the terminal and send to the same address I get the following written into the log as well as the mail actually sending and ending up in my inbox:

Jan  4 00:02:48 Machine postfix/local[6520]: 6C82DB80C4A: to=<root@example.com>, relay=local, delay=0.01, delays=0/0/0/0.01, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Jan  4 00:02:48 Machine postfix/qmgr[6497]: 6C82DB80C4A: removed
Jan  4 00:09:58 Machine postfix/pickup[6496]: B206CB80C46: uid=0 from=<root>
Jan  4 00:09:58 Machine postfix/cleanup[6540]: B206CB80C46: message-id=<20140104050958.B206CB80C46@Machine>
Jan  4 00:09:58 Machine postfix/qmgr[6497]: B206CB80C46: from=<root@example.com>, size=265, nrcpt=1 (queue active)
Jan  4 00:09:59 nightMachine postfix/smtp[6542]: B206CB80C46: to=<destemail@gmail.com>, orig_to=<monkey@example.com>, relay=gmail-smtp-in.l.google.com[74.125.142.26]:25, delay=14, delays=13/0/0.22/0.69, dsn=2.0.0, status=sent (250 2.0.0 OK 1388812199 qd7si6471164igb.62 - gsmtp)
Jan  4 00:09:59 Machine postfix/qmgr[6497]: B206CB80C46: removed

Is there a reason for this? How would I fix it?

I was following this tutorial.

postfix/virtual:

monkey@example.com destemail@gmail.com

Main.cf:

# See /usr/share/postfix/main.cf.dist for a commented, more complete version


# Debian specific:  Specifying a file name will cause the first
# line of that file to be used as the name.  The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

myhostname = Machine
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = example.com, Machine, localhost.localdomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
home_mailbox = mail/


#added the following for mail server :O!!
virtual_alias_domains = example.com 
virtual_alias_maps = hash:/etc/postfix/virtual

result when I do a dig example.com mx query in terminal:

;; ANSWER SECTION:
example.com.        21600   IN      MX      10 mail.example.com.

telnet example.com 25

Connected to example.com.
Escape character is '^]'.
220 Machine ESMTP Postfix (Ubuntu)
Jenny D
  • 27,780
  • 21
  • 75
  • 114
bnynn
  • 123
  • 4
  • 1) Don't use a domain name you don't own. Either use your own (which will give the people helping you a better chance of doing so) or use example.com which is specifically meant to be used in such cases. 2) Do you have an A or CNAME record for mail.example.com? (I would have been able to check that, had you used your own domain name instead of a random one you don't own.) – Jenny D Jan 04 '14 at 20:19
  • Sorry, I changed the name for privacy reasons. And no it is only listed as an MX, do I perhaps need to make a CNAME record for mail? – bnynn Jan 04 '14 at 20:25
  • A lot of people do that, and it makes it really hard to help with anything DNS related. I do understand your point, but it's also important to make sure you don't cause problems for either the people helping you or for the people who own the domain you used. If I hadn't recognised "tacobell.com", I might have spent some time checking their DNS and mailservers to no use. (And not everyone here is from the US and thus won't necessarily know that a name is a well-known company in the US; I only recognised tacobell because I did a translation for them some 12 years ago!) – Jenny D Jan 04 '14 at 20:34
  • I am terribly sorry! I had no idea that using that name would cause so much confusion! I will definitely consider this for future posts. Thank you. – bnynn Jan 04 '14 at 20:39
  • I know you didn't mean anything bad, that's why I wanted to explain. I will see if we can get a note about that into the help section, on "how to ask questions", to make it easier for people to know how to obfuscate names when they need to. – Jenny D Jan 05 '14 at 11:44

1 Answers1

2

You've set your MX record to "mail.example.com". That means that when any mailserver tries to send mail to you, they will do a DNS lookup to find mail.example.com. Since that doesn't exist, the sending system doesn't know where to send the email.

To fix this, do either of the following two things:

  1. Remove your MX record entirely. As long as you don't have an MX record, the sending system will instead do a DNS lookup for example.com, and since that does resolve to the server running your mailserver, that will work.
  2. In addition to the MX record, create an A or CNAME record for mail.example.com.

It should look like his for an A record:

mail     A     127.0.0.1

(except, of course, the IP address should be the actual IP of the server, not the loopback address)

and like this for a CNAME:

mail     CNAME example.com.
Jenny D
  • 27,780
  • 21
  • 75
  • 114
  • YOU'RE A GENIUS THANK YOU SO MUCH I'VE SPENT THE LAST DAY ON THIS AND NOTHING BUT NOW, OMG!! – bnynn Jan 04 '14 at 20:43
  • Heh, thanks :-) I'm not a genius, but I've been running email systems for a couple of decades now... – Jenny D Jan 05 '14 at 11:43