Oppsett av Postfix som mailserver

Fra Oslo Linux User Group (OLUG)
Revisjon per 30. jan. 2007 kl. 22:05 av Divid (diskusjon) (Initiellt innhold)

(diff) ← Eldre revisjon | Nåværende revisjon (diff) | Nyere revisjon → (diff)
Hopp til: navigasjon, søk

Hvordan sette opp en eposttjener i fem enkle trinn

Denne gaiden skal i fem (mer eller mindre) små trinn vise hvordan man kan sette opp en egen eposttjener i hjemmet. Først er det nødvendig med noen begrepsavklaringer

Trinn 1. Begreper

Diagrammet under viser enkelt hvordan en mailforsendelse foregår (" Lånt fra: Mail-Administrator HOWTO).

                   +---------+          +-------+
+-------+  types   | sending |  calls   |sending|  
| Alice |--------->|   MUA   |--------->|  MTA  |::::>::::
+-------+          |         |          |       |       ::   on the
                   +---------+          +-------+       ::   sending
                                                        ::   machine
.......................................................................
                             SMTP                       ::
 ::::::::::::::::::::::::::::<::::::::::::::::::::::::::::
 ::
 ::   +---------+          +-----+                +-------+
 ::   |receiving|  calls   |     |  delivers to   | Bob's |
 ::::>|   MTA   |--------->| LDA |===============>|mailbox|  on the
      |         |          |     |                |       |  receiving
      +---------+          +-----+                +-------+  machine
                                                    |   |
                                                    |   |
                     +----------------<-------------+   |
                     |                                  |
                +---------+         +-------+           |
                |  Bob's  |         | Bob's |<----------+
                | notifier|         |  MUA  |
                +---------+         +-------+
                     |                  |
                     |      +-----+     |
                     +----->| Bob |<----+
                            +-----+


MUA betyr Mail User Agent, altså klientprogrammet som brukeren benytter for å skrive og lese sin epost. LDA betyr Local Delivery Agent, som er et program, for eksempel procmail, som sørger for at epost som MTAen mottar blir levert til den lokale brukeren.Notifier er et program som forteller mottager Bob at han har fått ny mail. SMTP står for simple mail transfer protocol, som er protokollen som MTAene bruker seg imellom for å utveksle epost.

Trinn 2: Velge en MTA

I denne gaiden skal vi ikke se på MUA og LDA. I stedet skal vi velge en MTA, som er den viktigste komponenten dersom en skal kjøre en egen eposttjener hjemme i stua. I denne teksten har vi valgt postfix, som undertegnede erfarer er ganske enkel å sette opp dersom man ikke har satt opp en eposttjener før. MTA sin oppgave er å motta mail fra en annen tjener, eller å sende mail til en annen tjener. Det er altså en MTA i hver ende av en forbindelse når epost skal utveksles.

Trinn 3: Samle data som er nødvendige

Vi må vite hvilket domene vi vil motta mail for. I denne gaiden skal vi bruke to domener, hjemmeserver.net, og hjemmeserver.com. Dernest må vi vite hvilke domener som skal bruke epostserveren for utgående mail. Vi skal videre anta at selve serverboksen har et vertsnavn som er www.hjemmeserver.net|com.

Trinn 4: "Relaying", hvem skal få lov til å sende mail med tjeneren vår?

I utgangspunktet ønsker vi kun at verter på innsida av vårt nettverk skal få lov til å bruke tjeneren vår itl å sende mail.

Trinn 5: Legge inn de rette opsjonene i konfiurasjonsfilene

Vi skal manuelt oppdatere konfigurasjonsfilene til postfix. Disse befinner seg i /etc/postfic. Den viktigste heter main.cf. Vi åpner denne i vi (selvsagt) og leter opp de viktige konfigurasjonsopsjonene. DEn første vi skal se på er "myhostname". Denna angir vertsnavnet til vår mailtjener. Som sagt over skal denne være www.hjemmetjener.net|com. Vi antar her at det er .net som skal brukes som tjenernavn.:


	# The myhostname parameter specifies the internet hostname of this
	# mail system. The default is to use the fully-qualified domain name
	# from gethostname(). $myhostname is used as a default value for many
	# other configuration parameters.
	#
	myhostname = www.hjemmeserver.net

Vi husker selvsagt å fjerne #'en foran spesifikasjonen. Neste trinn er å sette domenenavn:

	# The mydomain parameter specifies the local internet domain name.
	# The default is to use $myhostname minus the first component.
	# $mydomain is used as a default value for many other configuration
	# parameters.
	#
	mydomain = hjemmeserver.net

Vi kan velge å la denne stå kommentert ut med en # foran, da vil myhostname minus den første delen bli brukt, altså hjemmeserver.net. Vi velger likevel å sette den eksplisitt. Så skal vi se litt på hvilket domene utgående skal se ut til å komme fra. Dette påvirker hvilket domene mail fra din tjener ser ut til å komme fra når andre mottar mail fra tjeneren. Vi lar denne være lik $mydomain, ettersom vi ikke vil at mail skal se ut til å komme fra myhostname (standard).

	# The myorigin parameter specifies the domain that locally-posted
	# mail appears to come from. The default is to append $myhostname,
	# which is fine for small sites.  If you run a domain with multiple
	# machines, you should (1) change this to $mydomain and (2) set up
	# a domain-wide alias database that aliases each user to
	# user@that.users.mailhost.
	#
	# For the sake of consistency between sender and recipient addresses,
	# myorigin also specifies the default domain name that is appended
	# to recipient addresses that have no @domain part.
	#
	#myorigin = $myhostname
	myorigin = $mydomain

Vi setter så hvilke grensesnitt vi ønsker å ta imot mail på.

	# The inet_interfaces parameter specifies the network interface
	# addresses that this mail system receives mail on.  By default,
	# the software claims all active interfaces on the machine. The
	# parameter also controls delivery of mail to user@[ip.address].
	#
	# See also the proxy_interfaces parameter, for network addresses that
	# are forwarded to us via a proxy or network address translator.
	#
	# Note: you need to stop/start Postfix when this parameter changes.
	#
	#inet_interfaces = localhost
	inet_interfaces = all

Vi har her valgt å ta imot mail på alle grensesnitt. Nå skal vi sørge for at vår mailtjener kan ta imot mail fra flere domener, blant annet hjemmeserver.com. Dette setter vi med "mydestination" parameteret:

	# The mydestination parameter specifies the list of domains that this
	# machine considers itself the final destination for.
	#
	# These domains are routed to the delivery agent specified with the
	# local_transport parameter setting. By default, that is the UNIX
	# compatible delivery agent that lookups all recipients in /etc/passwd
	# and /etc/aliases or their equivalent.
	#
	# The default is $myhostname + localhost.$mydomain.  On a mail domain
	# gateway, you should also include $mydomain.
	#
	# Do not specify the names of virtual domains - those domains are
	# specified elsewhere (see sample-virtual.cf).
	#
	# Do not specify the names of domains that this machine is backup MX
	# host for. Specify those names via the relay_domains settings for
	# the SMTP server, or use permit_mx_backup if you are lazy (see
	# sample-smtpd.cf).
	#
	# The local machine is always the final destination for mail addressed
	# to user@[the.net.work.address] of an interface that the mail system
	# receives mail on (see the inet_interfaces parameter).
	#
	# Specify a list of host or domain names, /file/name or type:table
	# patterns, separated by commas and/or whitespace. A /file/name
	# pattern is replaced by its contents; a type:table is matched when
	# a name matches a lookup key (the right-hand side is ignored).
	# Continue long lines by starting the next line with whitespace.
	#
	# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
	#
	mydestination = $mydomain, hjemmeserver.com

Vi ser til slutt på Trust og Relay kontrollen - og setter opp hvem vi stoler på, og hvem som skal få lov til å relaye mail.

	# TRUST AND RELAY CONTROL
	                                                                                
	# The mynetworks parameter specifies the list of "trusted" SMTP
	# clients that have more privileges than "strangers".
	#
	# In particular, "trusted" SMTP clients are allowed to relay mail
	# through Postfix.  See the smtpd_recipient_restrictions parameter
	# in file sample-smtpd.cf.
	#
	# You can specify the list of "trusted" network addresses by hand
	# or you can let Postfix do it for you (which is the default).
	#
	# By default (mynetworks_style = subnet), Postfix "trusts" SMTP
	# clients in the same IP subnetworks as the local machine.
	# On Linux, this does works correctly only with interfaces specified
	# with the "ifconfig" command.
	#
	# Specify "mynetworks_style = class" when Postfix should "trust" SMTP
	# clients in the same IP class A/B/C networks as the local machine.
	# Don't do this with a dialup site - it would cause Postfix to "trust"
	# your entire provider's network.  Instead, specify an explicit
	# mynetworks list by hand, as described below.
	#
	# Specify "mynetworks_style = host" when Postfix should "trust"
	# only the local machine.
	#
	#mynetworks_style = class
	mynetworks_style = subnet
	#mynetworks_style = host

Vi angir først at hele subnettet vårt skal vi stole på. Disse får relaye mail gjennom tjeneren vår. Etterpå setter vi relay_domains, som angir hvilke andre domener postfix vil relaye *til*.

	# The relay_domains parameter restricts what destinations this system will
	# relay mail to.  See the smtpd_recipient_restrictions restriction in the
	# file sample-smtpd.cf for detailed information.
	#
	# By default, Postfix relays mail
	# - from "trusted" clients (IP address matches $mynetworks) to any destination,
	# - from "untrusted" clients to destinations that match $relay_domains or
	#   subdomains thereof, except addresses with sender-specified routing.
	# The default relay_domains value is $mydestination.
	#
	# In addition to the above, the Postfix SMTP server by default accepts mail
	# that Postfix is final destination for:
	# - destinations that match $inet_interfaces,
	# - destinations that match $mydestination
	# - destinations that match $virtual_alias_domains,
	# - destinations that match $virtual_mailbox_domains.
	# These destinations do not need to be listed in $relay_domains.
	#
	# Specify a list of hosts or domains, /file/name patterns or type:name
	# lookup tables, separated by commas and/or whitespace.  Continue
	# long lines by starting the next line with whitespace. A file name
	# is replaced by its contents; a type:name table is matched when a
	# (parent) domain appears as lookup key.
	#
	# NOTE: Postfix will not automatically forward mail for domains that
	# list this system as their primary or backup MX host. See the
	# permit_mx_backup restriction in the file sample-smtpd.cf.
	#
	relay_domains = $mydestination

Vi setter ingen relay_domains her, med unntak av våre to domener hjemmeserver.net|com. Resten av konfigurasjonen skal vi la stå som default, siden vi ikke trenger å sette noe mer i vårt enkle eksempelnettverk. Vi er nå klar for å starte MTAen vår:

root@krypton postfix]# /etc/init.d/postfix start
Starter postfix:                                                [  OK   ]
[root@krypton postfix]#

Med det skal eposttjeneren vår være klar til å motta epost ...