Postfix telepítése

  • Beküldve: 2015. május 18, 14:07
  • Szerző: Bolemányi Attila

Miután szépen megágyaztunk a Postfix levelezőszervernek, itt az idő feltelepíteni.

aptitude install postfix-mysql

A szerver típusa Internet Site legyen, a neve pedig az alapértelmezett mailserver.comega7.local

Készítsük el a Postfix számára a MySQL táblákra mutató konfigurációs fájlokat:

mkdir /etc/postfix/sql
cd /srv/web/www/postfixadmin.comega7.local/DOCUMENTS
sh ./POSTFIX_CONF.txt

A szkript a /tmp mappában készít egy postfixadmin-XXXX nevű mappát, ahol az elkészített konfigurációs fájlok szerepelnek. Az XXX négy számjegye véletlenszerű. Másoljuk be a fájlokat a megfelelő helyre:

cd /tmp/postfixadmin-xxxx
cp * /etc/postfix/sql

A Postfix fő konfigurációs fájlja a /etc/postfix/main.cf:

#Basic settings
myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
readme_directory = /usr/share/doc/postfix
html_directory = /usr/share/doc/postfix/html
myhostname = mailserver.comega7.local
mydomain = comega7.local
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.100.0/24
inet_interfaces = all
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = mailserver.comega7.local, localhost
relayhost =
mailbox_size_limit = 0
recipient_delimiter = +
notify_classes = resource, software
message_size_limit = 31457280

# TLS parameters
smtpd_tls_cert_file=/etc/postfix/ssl/certs/postfix.pem
smtpd_tls_key_file=/etc/postfix/ssl/private/postfix.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes

# PostfixAdmin configuration options
virtual_gid_maps = static:5000
virtual_uid_maps = static:5000

dovecot_destination_recipient_limit = 1
virtual_transport = dovecot
virtual_mailbox_domains = proxy:mysql:/etc/postfix/sql/mysql_virtual_domains_maps.cf
virtual_alias_maps =
    proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_maps.cf,
    proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_maps.cf,
    proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_catchall_maps.cf
virtual_mailbox_maps =
    proxy:mysql:/etc/postfix/sql/mysql_virtual_mailbox_maps.cf,
    proxy:mysql:/etc/postfix/sql/mysql_virtual_alias_domain_mailbox_maps.cf

# SASLAUTH options
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes

# SMTPD basic settings
smtpd_delay_reject = yes
smtpd_helo_required = yes
smtpd_helo_restrictions =
    permit_mynetworks,
    check_helo_access
        hash:/etc/postfix/helo_access,
    reject_non_fqdn_helo_hostname,
    reject_invalid_helo_hostname,
    permit

# SMTPD sender restrictions
smtpd_sender_restrictions =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_unknown_sender_domain,
    permit

# SMTPD relay restrictions
smtpd_relay_restrictions =
    permit_mynetworks,
    permit_sasl_authenticated,
    defer_unauth_destination,
    permit

# SMTPD recipient restrictions
smtpd_recipient_restrictions =
    permit_mynetworks,
    reject_non_fqdn_recipient,
    reject_unknown_recipient_domain,
    reject_rbl_client zen.spamhaus.org,
    reject_rbl_client bl.spamcop.net,
    permit

smtpd_data_restrictions =
    reject_unauth_pipelining

#content_filter = amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

A részletes magyarázatba most nem megyek bele, de nagyon ajánlom a Postfix dokumentáció szorgalmas tanulmányozását. Levelező szerver üzemeltetőjeként ez vitathatatlan kötelességed lesz a jövőben.

A Postfix szervernek szüksége lesz egy tanúsítványra, amelynek segítségével az 587-es porton bejövő SMTP kapcsolatokat titkosítja le (TLS). Ez az a port, ahol felhasználónév és jelszó megadásával a Postfix Admin segítségével felvett felhasználók levelek küldésére is használhatják szerverünket.

mkdir -p /etc/postfix/ssl/certs
mkdir -p /etc/postfix/ssl/private
openssl req -new -x509 -days 365 -nodes -out /etc/postfix/ssl/certs/postfix.pem -keyout /etc/postfix/ssl/private/postfix.key

A válaszok pedig:

Country Name: HU
State or Province Name: Pest
Locality Name: Budapest
Organization Name: Comega7
Organizational Unit Name: IT
Common Name: mailserver.comega7.local
Email Address: bolemanyi.attila@comega7.local

Az adatokat itt is szabadon variálhatod, egyetlen kivétellel: a Common Name itt az a név, amelyet a Postfix szervered használ, amikor bemutatkozik másoknak.

Az 587-es port (submission) kinyitásához az alábbi sorokat add hozzá a /etc/postfix/master.cf fájl végéhez:

submission inet n - n - - smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
  -o smtpd_helo_restrictions=
  -o smtpd_relay_restrictions=permit_sasl_authenticated,defer_unauth_destination

(A félkövérrel kiemelt kiegészítést köszönöm Harasztia Rolandnak) Szükségünk lesz egy olyan felhasználóra, aki létezik a Debian rendszerben, és akinek a tulajdonában lesz valamennyi tartomány és postafiók a szerver fájlrendszerében:

mkdir /srv/mail
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /srv/mail/vmail -m
rm /srv/mail/vmail/.*

Készítsük el a /etc/postfix/helo_access fájlt:

mailserver.comega7.local    REJECT
comega7.local               REJECT
192.168.100.200             REJECT

Készítsük el a fájl hash változatát:

postmap /etc/postfix/helo_access

Indítsuk újra a Postfix szervert:

service postfix restart