0% found this document useful (0 votes)
129 views

Postfix: Installing and Configuring Postfix On Debian

This document provides instructions for installing and configuring the Postfix mail transfer agent on Debian. It discusses how to install Postfix, configure the basic settings like hostname and domains, and test sending an email. It also covers additional Postfix configurations for anti-spam filtering, using SMTP authentication through providers like SBCGlobal, and setting up email forwarding through alias files.

Uploaded by

eduledo
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
129 views

Postfix: Installing and Configuring Postfix On Debian

This document provides instructions for installing and configuring the Postfix mail transfer agent on Debian. It discusses how to install Postfix, configure the basic settings like hostname and domains, and test sending an email. It also covers additional Postfix configurations for anti-spam filtering, using SMTP authentication through providers like SBCGlobal, and setting up email forwarding through alias files.

Uploaded by

eduledo
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Postfix - Debian Wiki http://wiki.debian.

org/Postfix

Translation(s): English - Italiano  Discussion

Postfix is a secure Mail Transfer Agent

Conteúdos
1. Postfix
1. Installing and Configuring Postfix on Debian
2. anti-spam: smtp restrictions
3. anti-spam: Using RBL Lists
4. Debian Anti-Spam Anti-Virus Gateway Email Server
5. Postfix and sbcglobal/yahoo/att
6. Forward Emails
7. Virtual Emails
8. Maildir
2. Postfix and mailing lists
1. Mailman with Postfix
3. Advanced options
1. SPF and multiple external ip addresses
2. Postfix and Sasl
4. External links

Postfix
Installing and Configuring Postfix on Debian
Install postfix (this will remove exim since there can't be two mail systems)(If you
have a website, choose internet site if configurations will ask):

apt-get install postfix

Check the log mail.log, mail.err, mail.info, mail.warn to see if postfix runs.

cat /var/log/mail.log

Configure: Now add your domain to config files, so others can't abuse your
mailsystem. We do it with postconf

postconf -e "myorigin = example.com"

1 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

Now add your hostname (computer name). Use command "hostname" if not sure.
It will show your hostname.

postconf -e "myhostname=server1.example.com"

Now add domain name that your system will handle.

postconf -e "relay_domains = example.com, example2.com, 
example3.com"

Reload Postfix Server:

postfix reload

Let's test our mailserver. Type

telnet localhost 25

You should see:

Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is '^]'.
220 server1.example.com ESMTP Postfix (Debian/GNU)

Now sent an email to yourself:

mail from:<[email protected]>
rcpt to:<[email protected]>
data
To: [email protected]
From: [email protected]
Subject: Hey my first email
This is my first email on debian postfix after installing 
configuring it.
It was easy. See you

Now to end data hit enter, type in a dot, and hit enter again:

Then

quit

2 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

Your are done. you can type "mail" and see if you have some.
Now let's get to next step:
If you have a router with firewall you will need to enable port 25 and
forward that port to your computer.
You will need to enter your MX records in your domain provider. (ex.
godaddy.com, or dnspark.com)
Check your mx records: go to  http://www.iptools.com/ locate "DNS
lookup". From pulldown menu select "MX". Type in your domain name
(ex. example.com). You should see some records there. If you don't see any
MX records go back to previous step. You have to have MX record
otherwise other computers won't be able to see you when sending emails.
Useful commands:

qshape
mailq
qshape deferred
postsuper
postsuper -r ALL   (requeue all emails)

You should be set. If your isp is blocking the traffic then you might need to login
to their smtp services. See Postfix and sbcglobal/yahoo/att below.

anti-spam: smtp restrictions
The first fight starts at your server so this should be added to any email server that
you setup. This makes sure that any computer that tries to send an email to you
has a valid domain name. (spammers use ex. myhomepc as a domain name. This
will stop them from spamming you.)
Insert this in your /etc/postfix/main.cf:

smtpd_recipient_restrictions = reject_invalid_hostname,
        reject_unknown_recipient_domain,
        reject_unauth_destination,
        reject_rbl_client sbl.spamhaus.org,
        permit

smtpd_helo_restrictions = reject_invalid_helo_hostname,
        reject_non_fqdn_helo_hostname,
        reject_unknown_helo_hostname

anti-spam: Using RBL Lists

3 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

RBL list is a list of domains which says whether they are spammers or not.

Insert this in your /etc/postfix/main.cf:

smtpd_client_restrictions = reject_rbl_client dnsbl.sorbs.net

See what rbl is about:  http://www.us.sorbs.net/mailsystems/postfix2.shtml

and  avoid such blacklists

Debian Anti-Spam Anti-Virus Gateway Email Server
If you are building anti spam system that will act as a gateway. Read below. If you
want to add more anti-spam restrictions this is worth reading.
Debian Anti-Spam Anti-Virus Gateway Email Server

Postfix and sbcglobal/yahoo/att
SBC global block port 25 on its DSL users:
http://help.sbcglobal.net/article.php?item=4640
We will use sbc smtp server via authentication to send emails. Do this:

apt-get install libsasl2-modules

ADD to main.cf by using postconf. Just type (smtp.att.yahoo.com requires the
port 587 otherwise you don't need it):

postconf -e "relayhost = [smtp.sbcglobal.yahoo.com]:587"
postconf -e "smtp_sasl_auth_enable = yes"
postconf -e "smtp_sasl_password_maps = hash:/etc/postfix
/sasl_passwd"
postconf -e "smtp_sasl_security_options = noanonymous"

Create a file called sasl_passwd in /etc/postfix/sasl_passwd. Inside
type in

[smtp.sbcglobal.yahoo.com]:587 [email protected]:mypassword

Now change permissions so others can't read it:

chmod 600 /etc/postfix/sasl_passwd

4 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

Now postmap it. (It creates a database-like file so postfix can read it.)

postmap /etc/postfix/sasl_passwd

Restart postfix

postfix reload

Done. You can use "mutt" to send emails outside. Check /var/log
/mail.log to see if everything is working.
After a switch from sbcglobal to att you need to verify you email address in your
yahoo email options. If you have 100s of mailing lists you will need to unblock
your port 25 since it is impossible to use att yahoo smtp servers without verifying
each email address.
To opt out of your port 25 (get it unfiltered) leave a request here: Unfilter port
25 on smtp.att.yahoo.com

Forward Emails
Forwarding emails can be done via alias file located in /etc/aliases
Run this command to add alias maps:

postconf -e "alias_maps = hash:/etc/aliases"

You can now add your user to /etc/aliases like this:

root: lucas

You can forward your emails to a different email address

lucas: [email protected]

Or you could forward your email while still getting a copy in your local mailbox

lucas: lucas [email protected]

When done adding aliases run this command which will create a database like file.

newaliases

5 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

Reload postfix

/etc/init.d/postfix reload

Virtual Emails
If you want virtual emails such as abuse or postmaster you can do the following.
Run this command to add virtual alias maps:

postconf -e "virtual_alias_maps = hash:/etc/postfix/virtual"

Create a /etc/postfix/virtual file

vi /etc/postfix/virtual

And add your virtual emails

postmaster [email protected]
abuse [email protected]
someemail lucas

Create a database like file out of it

postmap /etc/postfix/virtual

Reload postfix

/etc/init.d/postfix reload

Maildir
To use maildir format in your mailbox which creates separate files for each email
you can use the following commands:
Maildir has few advantages over mbox format. (It keeps emails in separate files,
allows for multiple applications to read mail, etc.)
Issue these commands:

postconf -e "home_mailbox = Maildir/"
postconf -e "mailbox_command ="

6 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

You are done. Now your mail goes to Maildir format.

Mutt

If you want to read your new maildir format you have to tell mutt to use it as well.
Edit this file:

vi /etc/Muttrc

Add these lines to the bottom of the file:

set folder="~/Maildir"
set mask="!^\\.[^.]"
set mbox="~/Maildir"
set record="+.Sent"
set postponed="+.Drafts"
set spoolfile="~/Maildir"

Now start mutt and send an email to yourself to see if it all works.

Postfix and mailing lists
Mailman with Postfix
Install mailman:

apt-get install mailman

When done type:

newlist mailman

Start mailman

/etc/init.d/mailman start

You should be able to see mailman running now. Visit:
http://www.yourwebsite.com/cgi-bin/mailman/admin or
http://localhost/cgi-bin/mailman/admin
Because postfix is a secondary choice for Debian we need to add:

7 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

Edit /etc/postfix/main.cf; where you see "relay_domains" add
lists.yourdomain.com. You would get something like this:

relay_domains = example.com, lists.example.com

In same file add ,hash:/var/lib/mailman/data/aliases after alias_maps

alias_maps = hash:/etc/aliases,hash:/var/lib/mailman/data/aliases

Now type:

postconf -e "transport_maps = hash:/etc/postfix/transport"
postconf -e "mailman_destination_recipient_limit = 1"

In /etc/postfix/master.cf add:

mailman unix  -       n       n       -       -       pipe
   flags=FR user=list
   argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} 
${user}

Edit or create /etc/postfix/transport. Add this line:

lists.example.com    mailman:

Then postmap it:

postmap /etc/postfix/transport

Now edit /etc/mailman/mm_cfg.py and add:

MTA = 'Postfix'
DEB_LISTMASTER = '[email protected]'
POSTFIX_STYLE_VIRTUAL_DOMAIN = ['lists.example.com']

Done. Now restart postfix, mailman

/etc/init.d/postfix reload
/etc/init.d/mailman restart

Create a mailing list:

8 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

newlist list_name

If you want archives add this to /etc/apache2/apache2.conf

Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /images/mailman/ /usr/share/images/mailman/

Done. Go to

http://lists.yourwebsite.com/cgi-bin/mailman/listinfo/list_name/

Mailman Troubleshooting

Connection refused

Assuming your postfix is running and listening on localhost, another possible problem
is that postfix is not configured to run in IPv6 mode, but your /etc/hosts file
specifies ::1 as localhost. In that case mailman tries to send mails to ::1 which has no
postfix listening, thus resulting in a (111, 'connection refused') error.

Advanced options
SPF and multiple external ip addresses
Explanation

I have some systems that are networked on an internal private ip address subnet
(192.168.0.0/16). For a few reasons I email reports and such to
<user>@mail.internal where user is an address that is not valid for receiving
mail via the external interfaces. These systems also share a public ip address subnet so
they could email each other that way, but I'd prefer they didn't for local addresses. I have
published SPF records for the public mail servers because all of our mail routes through
those servers so if others care to check they can ignore email claiming to be from us but
being delivered from other servers as per our SPF record.

Recently I have expanded the ip addresses these systems are using externally to support
multiple instances of port-based services like https (adding :oddport doesn't impress the
customers.) I could have expanded or added more liberal SPF record values, or added
more forward and reverse DNS records but I wanted to stick with less ip addresses.

9 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

So to recap my system has:

eth1 <public ip with spf published>
eth1:1 <public ip for extra port-based services>
eth0 <private ip on>

By using the settings in /etc/postfix/master.cf, /etc/postfix/main.cf
and /etc/postfix/transport as outlined above I was able to get my outgoing
smtp traffic to use my SPF published ip address once again.

Make SPF and multiple external ip addresses

If you are trying to implement SPF records while binding to one external ip address and
still working with dual-homed multiple ip aliased systems, or have any other reason to
support multi-homed systems with multiple ip addresses but want to limit postfix to use
only two of them try this.

/etc/postfix/master.cf
clone the smtp (not smtpd) service. Set the first one to use <spf published ip
address> Rename the second to smtpinternal and use <internal ip address>

 smtp      unix  -       -       -       -       -       smtp
        -o smtp_bind_address=<spf published ip address>
 smtpinternal      unix  -       -       -       -       -       
smtp
        -o smtp_bind_address=<internal ip address>

/etc/postfix/main.cf
Use transport_maps for routing

 transport_maps = hash:/etc/postfix/transport

/etc/postfix/transport
Map a transport for your internal domain.

 .internal smtpinternal:

Just postmap /etc/postfix/transport, invoke-rc.d postfix stop


and invoke-rc.d postfix start and you should be in business. Email to
<user>@<system>.internal will be delivered via the internal interface/ip address all other
email will be delivered via default methods which means internet mail will go out the the
spf published ip address.

10 de 11 08-01-2011 10:32
Postfix - Debian Wiki http://wiki.debian.org/Postfix

Optional:

/etc/postfix/main.cf
Use the inet_interfaces setting to only listen on the ip addresses you
want to.

 inet_interfaces = 127.0.0.1, <internal ip>, <spf 
published external ip>

Postfix and Sasl
This page should be merged here.
PostfixAndSASL

External links
Please see Postfix/Tutorials

CategoryNetwork

Postfix (editada pela última vez em 2010-12-27 08:50:51 por Tex)

11 de 11 08-01-2011 10:32

You might also like