9

I have installed postfix, and when I tried to send a mail to gmail it told me that it has been sent, but when I checked my inbox in Gmail I didn't saw it.

This is how the connection looked like:

$ telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 DarkSenic ESMTP Postfix (Debian/GNU)
HELO localhost.localdomain
250 DarkSenic
MAIL FROM:<[email protected]>
250 2.1.0 Ok
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Test

test
.
250 2.0.0 Ok: queued as E15692031E9
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

And this is my main.cf file:

# 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 (Debian/GNU)
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 = DarkSenic
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = localhost.localdomain, DarkSenic, localhost.localdomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 [2001:db8:1407:c3a0::]/60 128.66.85.168 10.0.0.0/24
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

This is what I get in the log file:

Dec 28 18:48:23 DarkSenic postfix/smtpd[4623]: connect from unknown[::1]
Dec 28 18:49:18 DarkSenic postfix/smtpd[4623]: B2C422031EA: client=unknown[::1]
Dec 28 18:49:28 DarkSenic postfix/cleanup[5564]: B2C422031EA: message-id=<20141228164918.B2C422031EA@DarkSenic>
Dec 28 18:49:28 DarkSenic postfix/qmgr[16196]: B2C422031EA: from=<[email protected]>, size=322, nrcpt=1 (queue active)
Dec 28 18:49:28 DarkSenic postfix/smtp[5565]: fatal: unknown service: smtp/tcp
Dec 28 18:49:29 DarkSenic postfix/qmgr[16196]: warning: private/smtp socket: malformed response
Dec 28 18:49:29 DarkSenic postfix/qmgr[16196]: warning: transport smtp failure -- see a previous warning/fatal/panic logfile record for the problem description
Dec 28 18:49:29 DarkSenic postfix/master[29689]: warning: process /usr/lib/postfix/smtp pid 5565 exit status 1
Dec 28 18:49:29 DarkSenic postfix/master[29689]: warning: /usr/lib/postfix/smtp: bad command startup -- throttling
Dec 28 18:49:29 DarkSenic postfix/error[5566]: B2C422031EA: to=<[email protected]>, relay=none, delay=41, delays=40/1/0/0.05, dsn=4.3.0, status=deferred (unknown mail transport error)
Dec 28 18:49:30 DarkSenic postfix/smtpd[4623]: disconnect from unknown[::1]

grep smtp /etc/services gives me:

smtp        25/tcp      mail
ssmtp       465/tcp     smtps       # SMTP over SSL

This is what I have in my master.cf file:

#
# Postfix master process configuration file.  For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       -       -       -       smtpd
#smtp      inet  n       -       -       -       1       postscreen
#smtpd     pass  -       -       -       -       -       smtpd
#dnsblog   unix  -       -       -       -       0       dnsblog
#tlsproxy  unix  -       -       -       -       0       tlsproxy
#submission inet n       -       -       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       -       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       -       -       -       qmqpd
pickup    fifo  n       -       -       60      1       pickup
cleanup   unix  n       -       -       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       -       1000?   1       tlsmgr
rewrite   unix  -       -       -       -       -       trivial-rewrite
bounce    unix  -       -       -       -       0       bounce
defer     unix  -       -       -       -       0       bounce
trace     unix  -       -       -       -       0       bounce
verify    unix  -       -       -       -       1       verify
flush     unix  n       -       -       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       -       -       -       smtp
relay     unix  -       -       -       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       -       -       -       showq
error     unix  -       -       -       -       -       error
retry     unix  -       -       -       -       -       error
discard   unix  -       -       -       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       -       -       -       lmtp
anvil     unix  -       -       -       -       1       anvil
scache    unix  -       -       -       -       1       scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent.  See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
#  mailbox_transport = lmtp:inet:localhost
#  virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus     unix  -       n       n       -       -       pipe
#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp      unix  -       n       n       -       -       pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail    unix  -       n       n       -       -       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp     unix  -       n       n       -       -       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix  -   n   n   -   2   pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman   unix  -       n       n       -       -       pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
  ${nexthop} ${user}

Why doesn't it work? and how can I fix it? I found some answers on the internet but they didn't work for me...

Thank you for reading and have a nice day :)

9
  • 1
    What do the logs say??
    – Marki
    Dec 28, 2014 at 16:44
  • I don't even get the mail into the spam folder. It's like he isn't delivered at all. Dec 28, 2014 at 16:45
  • I added the logs. Dec 28, 2014 at 16:52
  • @MadHatter With the logs that have been added to the question, it does not look like a duplicate at all.
    – kasperd
    Dec 28, 2014 at 17:28
  • 2
    @kasperd I agree, I've withdrawn my VTC. I'm no postfix guru, so can't help with this one, though.
    – MadHatter
    Dec 28, 2014 at 17:30

6 Answers 6

14

On Debian, postfix doesn't read /etc/services, but expects these files to exist in the queue_directory (usually /var/spool/postfix). So it is actually trying to read /var/spool/postfix/etc/services, which either doesn't exist or is corrupted.

Try recreating this file, or better yet just link it (if you aren't running postfix in a chroot).

sudo ln -snf /etc/services /var/spool/postfix/etc/services

If you are chrooting postfix, copy the file instead.

sudo cp -f /etc/services /var/spool/postfix/etc/services
2
  • Cool it works, it connects to the server, but the server marks it as spam. And doesn't even deliver it to the spam directory in my gmail account, It just throws it away. I'll try to fix it using something else that I found right now, do you have any other suggestion? Dec 28, 2014 at 22:46
  • If the message actually got to Gmail, there's not much else you can do...except to make sure the message doesn't look like spam. Dec 28, 2014 at 23:21
4

I encountered "fatal: unknown service: smtp/tcp" error because the SMTP daemon ran chrooted (which si default behavior on Debian for example) and the chroot environment wasn't properly set up. Check out official documentation.

To properly set up chroot environment you should use script for your platform provided in directory examples/chroot-setup in the source code distribution. This will be usually taken care of by your package manager, but if you're compiling from source or running in Docker container this step will be mandatory for chrooted daemons to work.

You can always disable the chroot for postfix daemons (but beware of security implications) which will also solve this problem.

1
  • In a Debian Docker container, you can run /etc/init.d/postfix start to both set up the chroot environment and start postfix. Sep 15, 2017 at 22:18
2

if you have chroot enabled please see my answer here for how to fix this issue

postfix/smtp: fatal: unknown service: smtp/tcp – but /var/spool/postfix/etc/services exists

1

Another solution is to tell postfix to not chroot smtp. That is the CentOS 6 default.

Find the two lines in /etc/postfix/master.cf that start with smtp. Change the 5th column from the left to an n on each line. Then restart postfix.

Of course, only do this if you are comfortable with postfix not running in a chroot'd environment.

0

To whom it may concern: I was stumbling over this error but haven't had any issues with content or format of /etc/services or its copy to chroot of Postfix. Instead, I've stumbled over https://github.com/zfsonlinux/zfs/issues/6803#issuecomment-378271799 revealing how use of noexec flag on filesystem mounted e.g. under /var/spool is preventing loading of resolver library used by Postfix to read /etc/services. Thus I had to toggle that flag so Postfix can read /etc/services at all.

0

I know this is a bit old, but in my case I wasn't able to find the problem. I was having the same issue and I realized it happened because I had started postfix by typing: postfix instead of running the init script:

/etc/init.d/postfix start

I'm running postfix inside docker (base image: Java:8). Hope it helps to anyone else with a similar problem.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .