Projet

Général

Profil

Postfix » Historique » Version 78

Patrice Nadeau, 2017-10-07 17:18

1 13 Patrice Nadeau
h1. Postfix
2 1 Patrice Nadeau
3 12 Patrice Nadeau
> Issue : #16
4
5 4 Patrice Nadeau
http://www.postfix.org
6 1 Patrice Nadeau
7
Logiciel de courrier électronique permettant, le transfert de courrier électronique (Message Transfert Agent).
8
9
Souvent installé de base pour l’envoie des message du serveur à une adresse externe. 
10 14 Patrice Nadeau
11 75 Patrice Nadeau
{{lastupdated_at}} {{lastupdated_by}}
12
13 14 Patrice Nadeau
----
14
15
{{toc}}
16
17 5 Patrice Nadeau
Si le serveur doit envoyer et recevoir des messages de et vers l’Internet, les items suivant sont obligatoire :
18
* Domaine : Un nom de domaine enregistrer et sa gestion disponible
19 1 Patrice Nadeau
* MX records : pour permettre la réception de courriel.
20 5 Patrice Nadeau
* SPF records : pour permettre l’envoie de messages sans être bannis par les « reverse lookup ».
21 1 Patrice Nadeau
22 21 Patrice Nadeau
Un serveur de relais (SMTP) externe seras nécessaire pour envoyer des courriels vers l’Internet si le port 25 est bloqué en entré (la majorité des cas).
23 1 Patrice Nadeau
24
Les fichiers de configuration sont :
25 5 Patrice Nadeau
* _/etc/postfix/master.cf_
26
* _/etc/postfix/main.cf_
27
28 13 Patrice Nadeau
h2. Installation
29 5 Patrice Nadeau
30
<pre><code class="bash">
31 76 Patrice Nadeau
sudo zypper install postfix perl-Mail-SP
32 50 Patrice Nadeau
wget http://download.opensuse.org/repositories/devel:/languages:/perl/openSUSE_Leap_42.1/noarch/postfix-policyd-spf-perl-2.010-3.1.noarch.rpm
33 76 Patrice Nadeau
sudo rpm -Uhv postfix-policyd-spf-perl-2.010-3.1.noarch.rpm
34
sudo systemctl enable postfix
35
sudo systemctl start postfix
36 17 Patrice Nadeau
# Ouvrir dans le pare-feu seulement si le serveur doit recevoir des courriels
37 76 Patrice Nadeau
sudo yast firewall services add service=service:smtp zone=EXT
38 5 Patrice Nadeau
</code></pre>
39
40 42 Patrice Nadeau
h2. Configuration de base
41 5 Patrice Nadeau
42 21 Patrice Nadeau
Si les courriels doivent sortir via un relais sur un autre serveur SMTP, modifier le fichier _/etc/postfix/main.cf_ :
43 5 Patrice Nadeau
<pre><code class="bash">
44
# Inscrire votre serveur SMTP de sortie
45
relayhost = smtp_server
46
# Spécifier toutes les interfaces
47
inet_interfaces = all
48 56 Patrice Nadeau
# Choisir une des les lignes suivantes
49
    # DNS server : 
50
    mydestination = $myhostname, localhost.$mydomain, $mydomain
51
    # DNS forwarder pfSense :
52
    mydestination = $myhostname, localhost.$mydomain
53 5 Patrice Nadeau
# Permettre aux machines du réseau local, l'utilisation du serveur
54
smtpd_client_restrictions = permit_mynetworks
55 77 Patrice Nadeau
# Utilisation de TLS
56 78 Patrice Nadeau
smtp_tls_security_level = may
57 77 Patrice Nadeau
smtpd_tls_security_level = may
58 5 Patrice Nadeau
</code></pre>
59
> La ligne myhostname DOIT être la même que l’enregistrement DNS de type MX sur internet pour ce domaine.
60 1 Patrice Nadeau
61 13 Patrice Nadeau
h2. Création de «blacklist» et de «whitelist».
62 1 Patrice Nadeau
63 72 Patrice Nadeau
> Informations provenant de : http://www.postfix.org/RESTRICTION_CLASS_README.html
64 71 Patrice Nadeau
65 1 Patrice Nadeau
Créer un fichier _/etc/postfix/sender_access_.
66
Placer à l’intérieur, l’adresse de courriel, le nom de domaine ou l’adresse IP avec l’une des options :
67 6 Patrice Nadeau
* OK
68
* REJECT
69
70 71 Patrice Nadeau
Modifier le fichier _/etc/postfix/sender_access_ pour inclure les adresse IP, domaines, adresses à bloquer :
71
> Ex.
72 6 Patrice Nadeau
<pre><code class="bash">
73
# myfriend.com OK
74
# myennemies.com REJECT
75
# myfriend@example.com OK
76
# junk@spam.com REJECT
77 1 Patrice Nadeau
# marketing@ REJECT
78 6 Patrice Nadeau
# theboss@ OK
79
# deals.marketing.com REJECT
80 1 Patrice Nadeau
# somedomain.com OK
81
101.15.251.176 REJECT
82
</code></pre>
83
84 71 Patrice Nadeau
Conversion du fichier en format db : 
85 1 Patrice Nadeau
<pre><code class="bash">
86
postmap /etc/postfix/sender_access
87 71 Patrice Nadeau
</code></pre>
88
89 73 Patrice Nadeau
Modifier le fichier _/etc/postfix/main.cf_
90 71 Patrice Nadeau
<pre><code class="bash">
91
smtpd_recipient_restrictions =
92
   ...
93
   check_sender_access hash:/etc/postfix/sender_access
94
</code></pre>
95
96
Relire la nouvelle configuration : 
97
<pre><code class="bash">
98 69 Patrice Nadeau
systemctl reload postfix.service
99 1 Patrice Nadeau
</code></pre>
100 70 Patrice Nadeau
101
La même chose peut-être faite pour bloquer l’accès à un client. Utiliser *client_access* au lieu de _sender_acess_.
102 7 Patrice Nadeau
103 74 Patrice Nadeau
h3. Utilisation de services de « blacklist » internet
104 7 Patrice Nadeau
105 62 Patrice Nadeau
Avant d'utiliser ses services, vérifier si l'usager envisagé est permis :
106
* https://www.spamhaus.org/organization/dnsblusage/
107
* http://www.barracudacentral.org/rbl
108
109 67 Patrice Nadeau
Modifier le fichier _/etc/postfix/main.cf_ pour ajouter :
110 1 Patrice Nadeau
<pre><code class="bash">
111 62 Patrice Nadeau
smtpd_recipient_restrictions = 
112 66 Patrice Nadeau
    ...
113 65 Patrice Nadeau
    reject_unauth_destination,
114 62 Patrice Nadeau
    reject_rbl_client zen.spamhaus.org, 
115 64 Patrice Nadeau
    reject_rbl_client b.barracudacentral.org,
116
    permit
117 29 Patrice Nadeau
</code></pre>
118
119
Relire la configuration
120
<pre><code class="bash">
121 69 Patrice Nadeau
systemctl reload postix.service
122 7 Patrice Nadeau
</code></pre>
123 6 Patrice Nadeau
124 54 Patrice Nadeau
h3. Utilisation des enregistrements SPF lors de la réception de courriel
125 51 Patrice Nadeau
126
Modifier le fichier _/etc/postfix/main.cf_ et ajouter *à la suite* de la ligne _smtpd_recipient_restrictions_ :
127
<pre><code class="bash">
128
check_policy_service unix:private/policy
129
</code></pre>
130
131 52 Patrice Nadeau
Modifier le fichier_/etc/postfix/master.cf_ eta jouter la ligne :
132
<pre><code class="bash">
133
policy    unix  -       n       n       -       0       spawn user=nobody argv=/usr/bin/perl /usr/lib/policyd-spf-perl
134
</code></pre>
135
136 13 Patrice Nadeau
h3. Alias
137 10 Patrice Nadeau
138 20 Patrice Nadeau
Usagers systèmes devant être redirigé vers des comptes utilisateurs réel.
139 10 Patrice Nadeau
140 20 Patrice Nadeau
Les ajouter dans le fichier _/etc/postfix/aliases_
141
142
Lancer la commande _newaliases_ pour activer les changements.
143
144 10 Patrice Nadeau
145 13 Patrice Nadeau
h3. Options courantes
146 11 Patrice Nadeau
147
Dans _main.cf_ : 
148
* *message_size_limit* :
149
150 13 Patrice Nadeau
h2. Entrés DNS
151 6 Patrice Nadeau
152 13 Patrice Nadeau
h3. A record
153 6 Patrice Nadeau
154 13 Patrice Nadeau
h3. MX record
155 6 Patrice Nadeau
156 13 Patrice Nadeau
h3. SPF record
157 6 Patrice Nadeau
158 57 Patrice Nadeau
Ajouter ceux du fournisseur internet 
159
> Le fournisseur et et tous ses abonnées pourront « se faire passer » pour le domaine !
160 2 Patrice Nadeau
161 13 Patrice Nadeau
h2. Test 
162 2 Patrice Nadeau
163 13 Patrice Nadeau
h3. SPF
164 3 Patrice Nadeau
165
Envoyer un courriel à une des adresses suivantes : 
166
* check-auth@verifier.port25.com 
167 6 Patrice Nadeau
* check-auth2@verifier.port25.com
168 8 Patrice Nadeau
169 43 Patrice Nadeau
h2. TLS
170 19 Patrice Nadeau
171
Site internet pour vérifier la configuration TLS :
172
* Envoie : https://www.checktls.com/perl/TestSender.pl
173
* Réception : https://www.checktls.com/perl/TestReceiver.pl
174
175 37 Patrice Nadeau
2 paramètres sont utilisés :
176
* *smtp_tls_security_level* : En envoie vers un autre serveur SMTP
177
* *smtpd_tls_security_level* : En réception d'un client
178
179
Les valeurs suivantes peuvent être utilisées :
180
* *none* : TLs n'est pas utilisé
181 45 Patrice Nadeau
* *may* : TLS est utilisé/annoncé au client distant mais n'est pas obligatoire (Opportunistic)
182 37 Patrice Nadeau
* *encrypt* : TLS DOIT être utilisé. Selon le "RFC 2487":http://tools.ietf.org/html/rfc2487, cette option ne devrait pas être utilisée avec des serveur publiques.
183
184 61 Patrice Nadeau
h3. Préalable
185
186 60 Patrice Nadeau
Dans le fichier _/etc/postfix/master.cf_, enlever le commentaire au début de la ligne
187
<pre><code class="bash">
188
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
189
</code></pre>
190
191
Relire la configuration
192
<pre><code class="bash">
193
systemctl reload postfix
194
</code></pre>
195
196 35 Patrice Nadeau
h3. De Postfix vers un autre serveur SMTP
197 45 Patrice Nadeau
198 35 Patrice Nadeau
Dans le fichier _/etc/postfix/mainc.cf_
199
<pre><code class="bash">
200 1 Patrice Nadeau
# Utilise l'encryption si disponible
201 47 Patrice Nadeau
smtp_tls_security_level = may
202
# Ajoute les messages TLS au journal
203
smtp_tls_loglevel = 1
204
</code></pre>
205
206 35 Patrice Nadeau
Relire la configuration
207
<pre><code class="bash">
208
systemctl reload postfix
209 31 Patrice Nadeau
</code></pre>
210 30 Patrice Nadeau
211 43 Patrice Nadeau
h3. D'un client vers Postfix
212 36 Patrice Nadeau
213 37 Patrice Nadeau
> Voir #54
214
215 40 Patrice Nadeau
Si un certificat externe n'est pas disponible, en généré un local :
216 38 Patrice Nadeau
<pre><code class="bash">
217
cd /etc/postfix
218
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
219
</code></pre>
220
221 36 Patrice Nadeau
Dans le fichier _/etc/postfix/main./cf_
222 32 Patrice Nadeau
<pre><code class="bash">
223
# Utilise l'encryption si disponible
224 58 Patrice Nadeau
smtpd_tls_security_level = may
225 1 Patrice Nadeau
# Ajoute les messages TLs au journal
226 58 Patrice Nadeau
smtpd_tls_loglevel = 1
227 41 Patrice Nadeau
# Fichiers du certificat
228 38 Patrice Nadeau
smtpd_tls_key_file = /etc/postfix/smtpd.key
229
smtpd_tls_cert_file = /etc/postfix/smtpd.cert
230 1 Patrice Nadeau
</code></pre>
231 37 Patrice Nadeau
232
Relire la configuration
233
<pre><code class="bash">
234 59 Patrice Nadeau
systemctl reload postfix.service
235 37 Patrice Nadeau
</code></pre>
236 32 Patrice Nadeau
237 46 Patrice Nadeau
Si le serveur est disponible à partir d'internet, on peux faire un test avec https://starttls.info/
238
239 44 Patrice Nadeau
h2. Domaines supplémentaires
240
241
> Voir #55
242
243 13 Patrice Nadeau
h2. Dépannage
244 8 Patrice Nadeau
245
La commande *mailq* permet de voir les requêtes en attentes.
246 18 Patrice Nadeau
247 23 Patrice Nadeau
h3. Messages ne s'envoient pas
248
249 26 Patrice Nadeau
> Vu sur une nouvelle installation openSUSE 13.2
250
251 27 Patrice Nadeau
La commande _postqueue -p_ affiche : *address resolver failure*
252
253 26 Patrice Nadeau
Modififer le fichier */etc/postfix/main.cf*
254
<pre><code class="bash">
255
disable_dns_lookups = yes
256
</code></pre>
257 25 Patrice Nadeau
258 23 Patrice Nadeau
h3. Messages *error: open database /etc/postfix/relay.db: No such file or directory*
259
260
> Vu sur une nouvelle installation openSUSE 13.2
261
262
Exécuter la commande
263
<pre><code class="bash">
264
postmap /etc/postfix/relay
265 18 Patrice Nadeau
</code></pre>