In the context of looking at implementing Postscreen, I’ve read through the 
postscreen readme, the master.cf man page, and postfix architectural overview 
docs, but I have some remaining service related questions I might appeal to one 
of the gurus on the list to help me with.


In a default master.cf file’s first non-comment line, the smtp service uses the 
smtpd command. I’m not clear why the smtp (client) service would use the smtpd 
(server) binary. Is there an old convention that drives the naming to be 
apparently contradictory or am I missing something in my interpretation?


In the postscreen instructions, one of the first steps is to comment out the 
smtp service line above and uncomment the one that uses the postscreen command 
instead. I get why, since postscreen is supposed to “screen” out bad clients 
before letting them talk to smtpd later. Is there anything in this 
configuration file that indicates this or is the handoff to smtpd built into 
postscreen itself?


Why is there an smtpd service that gets enabled during a postscreen 
implementation when there wasn’t one before? More specifically, without an 
smtpd service before, what service was serving smtpd for new smtp connections? 
The “smtp” service (that seems to actually be smtpd) listed first in the file?


In the smtpd service I just mentioned, this type is pass and not unix. When I 
looked up the 2 service types in the documentation, they both say, “The service 
listens on a UNIX-domain stream socket, and is accessible to local clients 
only.” but the pass type goes on to say, “It receives one open connection (file 
descriptor passing) per connection request.” I’ve done some further googling, 
but I can’t figure out what this means in terms of practical use. Can someone 
explain the practical difference between a unix type service and a pass type 
service?


Finally, there is ANOTHER service named smtp further down the file between 
proxywrite and relay that ACTUALLY uses smtp as the command but is of type unix 
(which, for a client, makes sense). What is the purpose of this instance of 
service named smtp (like, is it the “real” smtp service used for packaging and 
sending smtp messages?) and how is it that it does not “conflict” with the 
instance of smtp service discussed above? Under what conditions am I allowed to 
create services that have names which conflict? Only when the types are 
different (and then, only with certain “different type” combinations)? Or is 
there a first use rule on services which means that the smtp service above is 
the only one that get used?


I’m sorry if I’m being obtuse, but some elements of this file are a real 
head-scratcher for me. If this is covered somewhere outside of 
http://www.postfix.org/master.5.htmlhttp://www.postfix.org/OVERVIEW.html or 
http://www.postfix.org/POSTSCREEN_README.html or is discussed in more detail 
elsewhere on the Internet, please let me know and I’ll keep reading, but I’ve 
really tried to figure this out on my own to no success.


Any assistance would be appreciated.


Thanks,


Scott


P.S. Knowing that the default files drift from version to version and distro to 
distro, here is my default master.cf file. I put it down here since those who 
know the file best probably already know what it says. :) It came from a 
Centos7 minimal install.


<pre>

# 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       -       n       -       -       smtpd
#smtp      inet  n       -       n       -       1       postscreen
#smtpd     pass  -       -       n       -       -       smtpd
#dnsblog   unix  -       -       n       -       0       dnsblog
#tlsproxy  unix  -       -       n       -       0       tlsproxy
#submission inet n       -       n       -       -       smtpd
#  -o syslog_name=postfix/submission
#  -o smtpd_tls_security_level=encrypt
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#smtps     inet  n       -       n       -       -       smtpd
#  -o syslog_name=postfix/smtps
#  -o smtpd_tls_wrappermode=yes
#  -o smtpd_sasl_auth_enable=yes
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
#628       inet  n       -       n       -       -       qmqpd
pickup    unix  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      unix  n       -       n       300     1       qmgr
#qmgr     unix  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       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/local/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=/usr/lib/cyrus-imapd/deliver -e -r ${sender} -m ${extension} 
${user}
#
# ====================================================================
#
# Old example of delivery via Cyrus.
#
#old-cyrus unix  -       n       n       -       -       pipe
#  flags=R user=cyrus argv=/usr/lib/cyrus-imapd/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/local/sbin/bsmtp -f $sender $nexthop 
$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}

</pre>



Reply via email to