Serveur mail avec Postfix

Bonjour,

je viens chercher de l’aide car je suis désespéré avec mon serveur mail.
Ca fait des jours que j’essaie de le faire fonctionner.

Mon serveur est un Raspberry Pi. Pas une bête de course mais suffisant.
J’ai suivi le tutoriel suivant : http://www.clubic.com/forum/hardware-general/raspberry-pi-ze-topic-id877239-page1.html C’est spécialement le point 4.
C’est ainsi que j’ai paramétré mon pare-feu (IPTables), portsentry et fail2ban.
Ensuite pour postfix, j’ai suivi le tuto suivant : http://www.isalo.org/wiki.debian-fr/Configuration_d%27un_serveur_mail_avec_Postfix#Pr.C3.A9requis
Mon routeur redirige les ports 25, 110 et 143 vers mon serveur. Et j’ai ouvert ces ports sur mon pare-feu.

Au point où j’en suis, je peux recevoir des mails d’un user à l’autre sur mon serveur. Je peux aussi envoyer des mails vers l’extérieur (par exemple vers mon adresse gmail).
Mais je ne peux pas recevoir de mail de l’extérieur.

Je n’arrive pas à comprendre ce qui ne va pas.
Quand j’envoie un mail de GMail, je n’ai aucune trace dans /var/log/mail.log
Comme s’il n’était pas arrivé sur le serveur.

Je suis bien conscient que je ne vous donne pas beaucoup d’infos… Le problème c’est que je ne vois tellement pas ce qui coince que je ne vois pas quoi vous dire… Pour moi tout est en ordre et devrait marcher.

A titre d’information :
Mon fichier de zone chez GANDI :

@ 10800 IN A 95.182.252.118 smtp 300 IN A 95.182.252.118 www 10800 IN A 95.182.252.118 @ 28800 IN MX 10 smtp

Le script que j’ai utilisé pour configurer mon pare-feu :

[code]#!/bin/sh

#Suppression des règles précédentes
iptables -t filter -F
iptables -t filter -X

Définition des blocages pour les entrées et le suivi et autorisation des sorties

iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT

Conservations des connexions déjà établies

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Autorisation du loopback

iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

Autorisation du port HTTP (80)

iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

Autorisation du port SSH (26)

iptables -t filter -A INPUT -p tcp --dport 26 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 26 -j ACCEPT

Autorisation du port SMTP (25)

iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT

Autorisation du port POP3 (110)

iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT

Autorisation du port IMAP (143)

iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT

Autorisation du Ping et du Pong ^^

iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT

Regles pour éviter (en partie) les attaques de type Déni de Service

iptables -A FORWARD -p tcp --syn -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p udp -m limit --limit 1/second -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT

Limitation (loin d’être totale) du scan de ports

iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT[/code]

Mon fichier mail.cf pour postfix :

[code]# See /usr/share/postfix/main.cf.dist for a commented, more complete version

Debian specific: Specifying a file name will cause the first

line of that file to be used as the name. The Debian default

is /etc/mailname.

#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

appending .domain is the MUA’s job.

append_dot_mydomain = no

Uncomment the next line to generate “delayed mail” warnings

#delay_warning_time = 4h

readme_directory = no

TLS parameters

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

Activer l’identification SASL

smtpd_sasl_auth_enable = yes

Utiliser le système d’identification de Dovecot

smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

smtpd_sasl_authenticated_header = yes

See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for

information on enabling SSL in the smtp client.

myhostname = smtp.snyers.me
mydomain = snyers.me
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = snyers.me smtp.snyers.me localhost localhost.snyers.me
mynetworks = 127.0.0.0/8,192.168.0.0/28
#mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 51200000
recipient_delimiter = +
inet_interfaces = all
home_mailbox = Maildir/
#mailbox_command =
inet_protocols = ipv4
relayhost = smtp.voo.be
relay_domains = $mydestination[/code]

Le hostname de mon serveur est smtp.snyers.me

Pour le reste, j’utilise fail2ban et portsentry.

Le résultat de iptables -L donne :

[code]Chain INPUT (policy DROP)
target prot opt source destination
fail2ban-dovecot tcp – anywhere anywhere multiport dports smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
fail2ban-postfix tcp – anywhere anywhere multiport dports smtp,ssmtp
fail2ban-apache tcp – anywhere anywhere multiport dports http,https
fail2ban-ssh tcp – anywhere anywhere multiport dports ssh,26
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all – anywhere anywhere
ACCEPT tcp – anywhere anywhere tcp dpt:http
ACCEPT tcp – anywhere anywhere tcp dpt:26
ACCEPT tcp – anywhere anywhere tcp dpt:smtp
ACCEPT tcp – anywhere anywhere tcp dpt:pop3
ACCEPT tcp – anywhere anywhere tcp dpt:imap2
ACCEPT icmp – anywhere anywhere
ACCEPT tcp – anywhere anywhere tcp dpt:smtp

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcpflags: FIN,SYN,RST,ACK/SYN limit: avg 1/sec burst 5
ACCEPT udp – anywhere anywhere limit: avg 1/sec burst 5
ACCEPT icmp – anywhere anywhere icmp echo-request limit: avg 1/sec burst 5
ACCEPT tcp – anywhere anywhere tcpflags: FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all – anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all – anywhere anywhere
ACCEPT tcp – anywhere anywhere tcp dpt:http
ACCEPT tcp – anywhere anywhere tcp dpt:26
ACCEPT tcp – anywhere anywhere tcp dpt:smtp
ACCEPT tcp – anywhere anywhere tcp dpt:pop3
ACCEPT tcp – anywhere anywhere tcp dpt:imap2
ACCEPT icmp – anywhere anywhere

Chain fail2ban-apache (1 references)
target prot opt source destination
RETURN all – anywhere anywhere

Chain fail2ban-dovecot (1 references)
target prot opt source destination
RETURN all – anywhere anywhere

Chain fail2ban-postfix (1 references)
target prot opt source destination
RETURN all – anywhere anywhere

Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all – anywhere anywhere[/code]

Voilà. Je ne sais pas trop quoi ajouter. Si vous avez besoin d’infos supplémentaires, n’hésitez pas.

Un grand merci pour votre aide. Cela fait des semaines que je cherche et je suis vraiment à court d’idées…

Bonne journée.

Salut,

Les pré-requis ne sont tout simplement pas respectés.

[18:15:39] ~ $ host 95.182.252.118 Host 118.252.182.95.in-addr.arpa. not found: 3(NXDOMAIN) [18:15:40] ~ $

[18:50:06] ~ $ host snyers.me snyers.me has address 95.182.252.118 snyers.me mail is handled by 10 smtp.snyers.me. [18:50:32] ~ $

[quote=“Configuration d’un serveur mail avec Postfix”]

Prérequis

Pour avoir son serveur mail, il faut donc :

[b]un nom de domaine[/b]
une IP fixe
un PC allumé si possible 24h/24 

Pourquoi une IP fixe ? Les mails doivent pouvoir toujours trouver le serveur mail, c’est pourquoi l’IP doit être fixe.

L’association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C’est celui-ci que nous allons régler en premier. [/quote]

[quote=“BelZéButh”]Salut,

Les pré-requis ne sont tout simplement pas respectés.

[18:15:39] ~ $ host 95.182.252.118 Host 118.252.182.95.in-addr.arpa. not found: 3(NXDOMAIN) [18:15:40] ~ $

[quote=“Configuration d’un serveur mail avec Postfix”]

Prérequis

Pour avoir son serveur mail, il faut donc :

[b]un nom de domaine[/b]
une IP fixe
un PC allumé si possible 24h/24 

Pourquoi une IP fixe ? Les mails doivent pouvoir toujours trouver le serveur mail, c’est pourquoi l’IP doit être fixe.

L’association nom de domaine ⇔ adresse IP se règle au niveau du serveur DNS. C’est celui-ci que nous allons régler en premier. [/quote][/quote]

Hello,
d’abord merci pour la réponses :slightly_smiling:
C’est bizarre qu’il te donne ce résultat. Il me donne le même note bien.
Mais quand je fais host smtp.snyers.me il me répond : smtp.snyers.me has address 95.182.252.118
Ce qui m’a l’air plutôt bon signe. Donc je croyais que c’était en ordre de ce côté-là.
De plus mon adresse IP n’est pas fixe mais elle ne change quasi jamais. Elle n’a pas changé depuis que j’ai installé mon serveur.
Est-ce que ça pourrait causer des problèmes quand même ?

J’ai oublié de préciser : quand j’envoie un mail de GMail vers mon serveur, il me répond :

The recipient server did not accept our requests to connect. Learn more at http://support.google.com/mail/bin/answer.py?answer=7720 [(10) smtp.snyers.me. [95.182.252.118]:25: Connection timed out]

Bien qu’il soit bloqué, il a quand même l’air de trouver l’ip de mon serveur…

As-tu fait l’essai en désactivant ton parefeu ?

EDIT :
Le spécialiste est Fluo et il ne manquera pas de passer, mais comme il y a de fortes chances pour qu’il te le demande, envoie ici la réponse de

dovecot -n

Je ne suis pas du tout un spécialiste en DNS, est-ce normal que ton enregistrement

[mono]smtp.snyers.me. 300 IN A 95.182.252.118[/mono]

se trouve dans la section “additionnal” et non pas dans la section “answer” ?

Avis aux spécialistes…

Aussi, faudrait (comme toujours…) voir ce que disent les logs de postfix :wink:

EDIT : le timeout ferait penser effectivement à un problème de firewall

[quote=“ricardo”]As-tu fait l’essai en désactivant ton parefeu ?

EDIT :
Le spécialiste est Fluo et il ne manquera pas de passer, mais comme il y a de fortes chances pour qu’il te le demande, envoie ici la réponse de

dovecot -n[/quote]

Hello :slightly_smiling:
Si tu m’expliques comment désactiver mon pare-feu, je serais ravi d’essayer ^^
Cela dit j’ai posté le script qui m’a servi à paramétrer mon pare-feu. Le port 25 est supposé ouvert donc…
Ci après le résultat de dovecot -n

[code]# 2.1.7: /etc/dovecot/dovecot.conf

OS: Linux 3.6.11+ armv6l Debian 7.1

listen = *
mail_location = maildir:~/Maildir
namespace {
inbox = yes
location =
mailbox {
special_use = \Drafts
name = Drafts
}
mailbox {
special_use = \Junk
name = Junk
}
mailbox {
special_use = \Sent
name = Sent
}
mailbox {
special_use = \Sent
name = Sent Messages
}
mailbox {
special_use = \Trash
name = Trash
}
prefix =
name = inbox
}
passdb {
driver = pam
}
protocols = imap
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service {
unix_listener {
group = postfix
mode = 0660
user = postfix
path = /var/spool/postfix/private/auth
}
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
userdb {
driver = passwd
}
protocol lmtp {
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service auth-client {
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
}
protocol lda {
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service auth-client {
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
}
protocol imap {
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service auth-client {
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
}
protocol pop3 {
service replication-notify-fifo {
name = aggregator
}
service anvil-auth-penalty {
name = anvil
}
service auth-worker {
name = auth-worker
}
service auth-client {
name = auth
}
service config {
name = config
}
service dict {
name = dict
}
service login/proxy-notify {
name = director
}
service dns-client {
name = dns_client
}
service doveadm-server {
name = doveadm
}
service imap {
name = imap-login
}
service login/imap {
name = imap
}
service indexer-worker {
name = indexer-worker
}
service indexer {
name = indexer
}
service ipc {
name = ipc
}
service lmtp {
name = lmtp
}
service log-errors {
name = log
}
service pop3 {
name = pop3-login
}
service login/pop3 {
name = pop3
}
service replicator {
name = replicator
}
service login/ssl-params {
name = ssl-params
}
service stats-mail {
name = stats
}
}[/code]

[quote=“agentsteel”]Je ne suis pas du tout un spécialiste en DNS, est-ce normal que ton enregistrement

[mono]smtp.snyers.me. 300 IN A 95.182.252.118[/mono]

se trouve dans la section “additionnal” et non pas dans la section “answer” ?

Avis aux spécialistes…

Aussi, faudrait (comme toujours…) voir ce que disent les logs de postfix :wink:

EDIT : le timeout ferait penser effectivement à un problème de firewall[/quote]

Je n’ai pas les connaissances pour répondre à tes questions… J’attend les réponses des pros :slightly_smiling:

Pour info, j’ai fait un telnet snyers.me 25
Trying 95.182.252.118…
telnet: Unable to connect to remote host: Connection timed out

Alors que la réponse devait être du genre
Connected to smtp.snyers.me.
Escape character is ‘^]’.
220 smtp.snyers.me ESMTP Postfix (Debian/GNU)

Votre firewall accepte vraiment les connexions sur le port 25 ?

J’ai fait dig txt snyers.me mais je ne vois pas les enregistrements SFP, DKIM… Normalement si vous envoyez un mail sur votre adresse mail google vous aurez un bounced 550 5.7.1…
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> txt snyers.me
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34253
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;snyers.me. IN TXT

;; AUTHORITY SECTION:
snyers.me. 10010 IN SOA a.dns.gandi.net. hostmaster.gandi.net. 1385406075 10800 3600 604800 10800

;; Query time: 1 msec
;; SERVER: 192.168.2.100#53(192.168.2.100)
;; WHEN: Tue Dec 10 19:57:56 2013
;; MSG SIZE rcvd: 89

Un dig -x 95.182.252.118 ne renvoie pas le nom de domaine.

Il y a encore un peu de config à faire.

[quote=“Franck_FR”]Pour info, j’ai fait un telnet snyers.me 25
Trying 95.182.252.118…
telnet: Unable to connect to remote host: Connection timed out

Alors que la réponse devait être du genre
Connected to smtp.snyers.me.
Escape character is ‘^]’.
220 smtp.snyers.me ESMTP Postfix (Debian/GNU)

Votre firewall accepte vraiment les connexions sur le port 25 ?

J’ai fait txt snyers.me mais je ne vois pas les enregistrements SFP, DKIM… Normalement si vous envoyez un mail sur votre adresse mail google vous aurez un bounced 550 5.7.1…
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> txt snyers.me
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34253
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;snyers.me. IN TXT

;; AUTHORITY SECTION:
snyers.me. 10010 IN SOA a.dns.gandi.net. hostmaster.gandi.net. 1385406075 10800 3600 604800 10800

;; Query time: 1 msec
;; SERVER: 192.168.2.100#53(192.168.2.100)
;; WHEN: Tue Dec 10 19:57:56 2013
;; MSG SIZE rcvd: 89

Un dig -x 95.182.252.118 ne renvoie pas le nom de domaine.

Il y a encore un peu de config à faire.[/quote]

Je n’ai pas testé le telnet snyers.me 25
Par contre telnet smpt.snyers.me 25 a l’air de fonctionner parfaitement :-/
Pour le reste je vais devoir relire attentivement ce que vous avez envoyé et chercher ce que tout ça veut dire… j’suis un peu largué :frowning: