Openssl

Installer Openssl

# aptitude install openssl

Préparation

# cd /usr/lib/ssl/
# mkdir -p mon_AC/certs
# mkdir -p mon_AC/newcerts
# mkdir -p mon_AC/private

Création d'une AC

# openssl req -new -x509 -config ./conf/ca.cnf -extensions CA -sha1 -newkey rsa:4096 -nodes -days 3650 -keyout ca/ca.key -out ca/ca.pem
Generating a 4096 bit RSA private key
..............................++
.....................................................++
writing new private key to 'ca/ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Organisation (obligatoire) [GEZEN]:
Nom CN (obligatoire) []:GEZEN CA
Adresse mail (optionnel) []:lkco@gezen.fr

Création d'un certificat serveur

Création certificat serveur (http, imap, smtp…)

# openssl genrsa -out mon_AC/private/server_noriah_tls.key 2048
# openssl req -new -nodes -key mon_AC/private/server_noriah_tls.key -out mon_AC/newcerts/server_CSR.pem
# openssl ca -in mon_AC/newcerts/server_CSR.pem -out mon_AC/certs/server_noriah_tls.crt -keyfile mon_AC/private/mon_AC.key -cert mon_AC/private/mon_AC.crt -days 3650

Openldap

Pour l'installation d'un serveur Ldap, il faut se reporter à l'article Installation d'Openldap.

Voici un exemple au format ldif d'une entrée ldap représentant une personne qui aura un compte de messagerie.

# olikiangcheong, people, gezen.fr
dn: uid=olikiangcheong,ou=people,dc=gezen,dc=fr
loginShell: /bin/bash
employeeNumber: olikiangcheong
sn: LI-KIANG-CHEONG
gidNumber: 1000
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: person
objectClass: shadowAccount
objectClass: organizationalPerson
mail: olikiangcheong@gezen.fr
mail: olivier@gezen.fr
mail: olivier.likiangcheong@gezen.fr
mail: lkco@gezen.fr
givenName: Olivier
uid: olikiangcheong
displayName: LI-KIANG-CHEONG Olivier
cn: Olivier LI-KIANG-CHEONG
homeDirectory: /home/olikiangcheong
uidNumber: 10011

Installation des paquets

# aptitude install postfix postfix-ldap postfix-tls sasl2-bin cyrus-admin-2.2 cyrus-clients-2.2 cyrus-common-2.2 cyrus-imapd-2.2 ldap-utils libauthen-sasl-cyrus-perl

Question postfix :

  • choisir site internet, configuration plus tard
  • Nom de courier : gezen.fr

Contenu /etc/mailname

gezen.fr

Postfix

Contenu du fichier /etc/postfix/main.cf

smtpd_banner = $myhostname ESMTP $mail_name
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

myhostname = noriah.gezen.fr
mydomain = gezen.fr
myorigin = $mydomain
mydestination = gezen.fr, localhost.localdomain, localhost

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases ldap:ldapusers ldap:ldapalias

#################### LDAP USERS #####################
# connection au serveur ldap pour les utilisateurs  #
# enregistre                                        #
#####################################################
ldapusers_server_host = localhost
ldapusers_search_base = ou=people,dc=gezen,dc=fr
ldapusers_query_filter = (uid=%s)
ldapusers_result_attribute = uid
ldapusers_ldap_bind = no
ldapusers_ldap_timeout = 100
ldapusers_ldap_cache = yes
ldapusers_ldap_cache_expiry = 30
ldapusers_ldap_cache_size = 32768

###################### ALIASES ###################################
# connection au serveur ldap pour la gestion des alias           #
# par exemple, on peut rediger les mails a destination           #
# de jean.dupong@gezen.fr vers jdupont@gezen.fr                  #
# jdupont est representé par uid dans l'annuaire                 #
# jdupont@gezen.fr est l'adresse email par defaut                #
# jean.dupont@gezen.fr sera un alias                             #
##################################################################

ldapalias_server_host= localhost
ldapalias_search_base= ou=people,dc=gezen,dc=fr
ldapalias_query_filter= (&(mail=%s@$myorigin)(objectclass=inetOrgPerson))
ldapalias_result_attribute= uid
ldapalias_bind= no
ldapusers_ldap_timeout = 100
ldapusers_ldap_cache = yes
ldapusers_ldap_cache_expiry = 30
ldapusers_ldap_cache_size = 32768

relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

local_recipient_maps =
mailbox_transport = lmtp:unix:/var/run/cyrus/socket/lmtp
maximal_queue_lifetime = 5d

# Authentification SASL
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
# lancer 'postmap /etc/postfix/login_maps' a chaque modification
smtpd_sender_login_maps = hash:/etc/postfix/login_maps

##### pour le TLS ###############
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_tls_loglevel = 4
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source   = dev:/dev/urandom
smtpd_tls_key_file  = /usr/lib/ssl/mon_AC/private/server_noriah_tls.key
smtpd_tls_cert_file = /usr/lib/ssl/mon_AC/certs/server_noriah_tls.crt
smtpd_tls_CAfile    = /usr/lib/ssl/mon_AC/private/ca_gezen.crt

smtpd_sender_restrictions =
        reject_unknown_sender_domain,
        reject_non_fqdn_sender,
        check_client_access hash:/etc/postfix/client_access,
        reject_sender_login_mismatch

smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_tls_clientcerts,
        permit_sasl_authenticated,
        reject_unauth_destination,
        reject_unknown_client,
        reject_non_fqdn_recipient

Fichier /etc/postfix/login_maps. Sécurisation des comptes qui peuvent envoyés des messages à avec l'adresse email utilisée.

olikiangcheong@gezen.fr olikiangcheong
olivier@gezen.fr olikiangcheong
lkco@gezen.fr olikiangcheong
postmap /etc/postfix/login_maps

Fichier /etc/postfix/client_access : liste des réseaux autorisés à se connecter au serveur postfix sans authentification.

127.0.0.1 OK
postmap /etc/postfix/client_access
adduser postfix sasl
adduser postfix mail

Pour tester votre fichier de configuration, entrez la commande suivante:

postconf -n

qui affichera vos paramètres de configuration génériques.

Une fois le fichier modifié et les tests effectués, il faut redémarrer Postfix avec:

# /etc/init.d/postfix restart

Cyrus

Décommenter la ligne suivante dans le fichier /etc/cyrus.conf pour activer le imaps

[..]
SERVICES {
        # --- Normal cyrus spool, or Murder backends ---
        # add or remove based on preferences
        imap            cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
        imaps           cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
        #pop3           cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
        #pop3s          cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50
        #nntp           cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100
        #nntps          cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100
[..]

Modifier le fichier /etc/imapd.conf

altnamespace: yes
unixhierarchysep: yes
admins: cyrus
sasl_pwcheck_method: saslauthd
tls_cert_file: /usr/lib/ssl/mon_AC/certs/server_noriah_tls.crt
tls_key_file: /usr/lib/ssl/mon_AC/private/server_noriah_tls.key
imap_tls_cert_file: /usr/lib/ssl/mon_AC/certs/server_noriah_tls.crt
imap_tls_key_file: /usr/lib/ssl/mon_AC/private/server_noriah_tls.key
lmtp_tls_cert_file: /usr/lib/ssl/mon_AC/certs/server_noriah_tls.crt
lmtp_tls_key_file: /usr/lib/ssl/mon_AC/private/server_noriah_tls.key
tls_ca_file: /usr/lib/ssl/mon_AC/private/ca_gezen.crt

Puis redémarrer Cyrus:

/etc/init.d/cyrus2.2 restart

Création des répertoires:

# cyrus-makedirs

Modifier la ligne suivante comme ceci dans le fichier /etc/postfix/master.cf afin que postfix puissent accéder au lmtp

lmtp      unix  -       -       n       -       -       lmtp

SASL

Modifier le fichier /etc/default/saslauthd :

START=yes
MECHANISMS="ldap"
OPTIONS="-c -m /var/run/saslauthd -O /etc/saslauthd.conf"

Créer le fichier /etc/saslauthd.conf

ldap_servers: ldap://localhost:389/
ldap_bind_dn: cn=admin,dc=gezen,dc=fr
ldap_bind_pw: secret
ldap_search_base: ou=people,dc=gezen,dc=fr

Redémarrage du service:

# /etc/init.d/saslauthd restart

On ajoute le compte de l'administrateur cyrus :

# saslpasswd2 -c cyrus
# passwd cyrus (entrer le même mot de passe)

Ensuite créez le répertoire /etc/postfix/sasl :

# mkdir /etc/postfix/sasl 
# chown root:postfix /etc/postfix/sasl

Créez le fichier /etc/postfix/sasl/smtpd.conf contenant :

pwcheck_method: saslauthd

Par défaut, Postfix est chrooté il ne peut pas donc communiquer avec le démon SASL. Lancer les commandes suivantes pour que SASL tourne dans le chroot de postfix

/etc/init.d/saslauthd stop
rm -fr /var/run/saslauthd
mkdir -p /var/spool/postfix/var/run/saslauthd
cd /var/run
ln -s /var/spool/postfix/var/run/saslauthd

Redemarrage de Postfix

/etc/init.d/postfix restart

Tester l'authentification smpt et imap

Encoder le mot de passe

perl -MMIME::Base64 -e 'print encode_base64("olikiangcheong\@gezen\.fr\0olikiangcheong\@gezen\.fr\0secret");'  
b2xpa2lhbmdjaGVvbmdAZ2V6ZW4uZnIAb2xpa2lhbmdjaGVvbmdAZ2V6ZW4uZnIAc2VjcmV0

Modifier temporairement le fichier /etc/postfix/main.cf pour effectuer une authentification plain

smtpd_tls_auth_only = no

Redémarrer Postfix

/etc/init.d/postfix restart
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 noriah.gezen.fr ESMTP Postfix
auth plain
334 
b2xpa2lhbmdjaGVvbmdAZ2V6ZW4uZnIAb2xpa2lhbmdjaGVvbmdAZ2V6ZW4uZnIAc2VjcmV0
235 2.7.0 Authentication successful
telnet localhost 143
rying ::1...
Connected to localhost.
Escape character is '^]'.
* OK sd-15214 Cyrus IMAP4 v2.2.13-Debian-2.2.13-19 server ready
a login olikiangcheong secret
a OK User logged in
a logout
* BYE LOGOUT received
a OK Completed
Connection closed by foreign host.
messagerie/installation_postfix.txt · Dernière modification: 2017/07/07 14:42 (modification externe)
CC Attribution-Noncommercial-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0