Repository 32bit  Forum
Repository 64bit  Wiki

Postfix+Dovecot sasl authentication: differenze tra le versioni

Da Slacky.eu.
(Nuova pagina: = Introduzione = In questo breve documento vorrei spiegare brevemente come utilizzare '''Postfix''', '''Dovecot''' e '''Postgresql''' per gestire gli utenti di un server SMTP+IMAP. Il...)
 
m (Unificare l'autenticazione per l'IMAP e l'SMTP)
 
(4 revisioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
  +
[[Category:Networking]]
= Introduzione =
= Introduzione =
In questo breve documento vorrei spiegare brevemente come utilizzare '''Postfix''', '''Dovecot''' e '''Postgresql''' per gestire gli utenti di un server SMTP+IMAP.
In questo breve documento vorrei spiegare brevemente come utilizzare '''Postfix''', '''Dovecot''' e '''Postgresql''' per gestire gli utenti di un server SMTP+IMAP.
Riga 111: Riga 112:
}
}
</pre>
</pre>
E in ''main.cf'' aggiungeremo le righe per abilitare l'autenticazione SASL, indicando il percorso relativo del socket di autenticazione "apero" da Dovecot:
+
E in ''main.cf'' aggiungeremo le righe per abilitare l'autenticazione SASL, indicando il percorso relativo del socket di autenticazione "aperto" da Dovecot:
<pre>
<pre>
smtpd_sasl_auth_enable = yes
smtpd_sasl_auth_enable = yes
Riga 136: Riga 137:
</pre>
</pre>
''P.S.''
''P.S.''
Sulla porta TCP 2525 ho '''gld''' per le whitelist.
+
Sulla porta TCP 2525 ho '''gld''' per il greylisting.
= Conclusioni =
= Conclusioni =
Riga 143: Riga 144:
Spero solo di essere stato esauriente !
Spero solo di essere stato esauriente !
= Links =
= Links =
  +
http://www.slacky.eu/wikislack/index.php?title=Dovecot%2C_il_server_Imap_e_Pop3
  +
http://www.dovecot.org/
http://www.dovecot.org/
  +
http://www.postgresql.org/
http://www.postgresql.org/
  +
http://www.postfix.org/
http://www.postfix.org/
----
----

Versione attuale delle 18:05, 16 mag 2008

Indice

[modifica] Introduzione

In questo breve documento vorrei spiegare brevemente come utilizzare Postfix, Dovecot e Postgresql per gestire gli utenti di un server SMTP+IMAP.

Il documento non parte da zero, e per l'installazione e configurazione di base dei suddetti programmi vi rimando alla documentazione gia' presente sulle relative home pages e sullo stesso sito slacky.

Le uniche cosa che mostrero' sono la struttura della table di PostgreSQL e le parti del file di configurazione di Postfix e Dovecot riguardanti l'argomento specifico.

[modifica] Postfix

Per gestire le mailbox in postfix, conviene utilizzare i virtual_domains, che permettono di servire piu' domini di posta con lo stesso server, semplificando notevolmente la configurazione e permettendo di centralizzare il controllo (antivirus e antispam) ed i backup.

[modifica] configurazione

In main.cf:

virtual_mailbox_domains = nonesisto.it enemmenoio.it

# 2 G
# 
virtual_mailbox_limit =  2048000000
virtual_mailbox_base = /var/spool/virtual
virtual_mailbox_maps = hash:/usr/local/etc/postfix/virtual_mailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:65534
virtual_gid_maps = static:65533

In virtual_mailbox:

giovanni@nonesisto.it       nonesisto/giovanni/
samantha@nonesisto.it      nonesisto/samantha/
alberto@enemmenoio.it      enemmenoio/alberto/

Le mail quindi verranno salvate nella directory base /var/spool/virtual, nelle sottodirectory indicate in virtual_mailbox, e saranno in formato Maildir, grazie allo slash finale. Dovrete creare solo le sottodirectory della directory base (in questo caso nonesisto e nemmenoio), lasciando che postfix crei le maildir alla prima mail ricevuta. Ovviamente dovrete settare i permessi delle directory in modo che l'utente postfix possa creare le sotto directory.

N.B. Ricordarsi di ridare sempre il comando 'postmap seguito da un reload di postfix quando si fanno variazioni nei files hash di configurazione !

# postmap /usr/local/etc/postfix/virtual_mailbox
# postfix reload

Testate che la ricezione delle mail vada a buon fine, controllando che siano state create le relative maildir degli utenti.

[modifica] PostgreSQL

In un database (ad es. imapusers) create una table (leggibile da un utente tipo loginimap) formata dai seguenti campi:

 imapusers=# \d user_tbl
                                  Table "public.user_tbl"
  Column  |          Type          |                       Modifiers                       
----------+------------------------+-------------------------------------------------------
 id       | integer                | not null default nextval('user_tbl_id_seq'::regclass)
 userid   | character varying(50)  | not null
 domain   | character varying(50)  | not null
 password | character varying(50)  | not null
 mail     | character varying(256) | not null
 uid      | integer                | not null default 65534
 gid      | integer                | not null default 65534

Nella table ci saranno i campi di autenticazione userid e password (da inserire con la funzione SQL md5()), il domain usato dalle virtual_mailbox di postfix e il uid/gid dell'utente.

1 | samantha | nonesisto.it | 4r9bdaw83674aq11ba6094caq3z | /var/spool/virtual/nonesisto.it/samantha/ | 65534 | 65534

[modifica] Dovecot

Nel file di configurazione di dovecot, indicate come meccanismo di autenticazione di default l'sql passando negli args il percorso completo del file di configurazione delle query.

auth default {
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }

  userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
}

Previa compilazione di dovecot con i driver per PostgreSQL, creiamo il file che permette a dovecot di stabilire i parametri della connessione e le query da eseguire:

# Database driver: mysql, pgsql, sqlite
driver = pgsql

connect = host=127.0.0.1 dbname=imapusers user=loginimap password=sicretverimach
default_pass_scheme = PLAIN-MD5

password_query = SELECT userid as user, password FROM user_tbl WHERE userid = '%u'
user_query = SELECT mail,uid,gid FROM user_tbl WHERE userid = '%u'

Riavviate dovecot e provate l'autenticazione.

[modifica] Unificare l'autenticazione per l'IMAP e l'SMTP

Arrivati a questo punto, vorremmo che i nostri utenti inviassero le mail da qualsiasi indirizzo IP, non necessariamente appartenente alla LAN su cui risiede il server Postfix. Per evitare di diventare un famigerato open relay, aggiungiamo al file di configurazione di Dovecot una riga, che "aggiungera'" un socket in ascolto per permettere a Postfix di autenticarsi attraverso il database degli utenti IMAP.

Le righe che abbiamo aggiunto prima in dovecot.conf per l'autenticazione sql, diventeranno:

auth default {
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
  userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
  
  socket listen {
      client {
        # percorso assoluto
        #
        path = /var/spool/postfix/private/auth
          mode = 0660
          user = postfix
          group = postfix
      }
}

E in main.cf aggiungeremo le righe per abilitare l'autenticazione SASL, indicando il percorso relativo del socket di autenticazione "aperto" da Dovecot:

smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
broken_sasl_auth_clients = yes
smtpd_sasl_path = private/auth

E ricordiamoci di abilitare l'autenticazione SASL in smtpd_recipient_restrictions, se non l'abbiamo gia' fatto:

smtpd_recipient_restrictions = reject_unauth_pipelining,
 reject_unknown_recipient_domain,
 permit_mynetworks, permit_sasl_authenticated,
 reject_unknown_sender_domain,
 reject_non_fqdn_sender,
 reject_non_fqdn_recipient,
 reject_invalid_hostname,
 reject_non_fqdn_hostname,
 reject_unauth_destination,
 check_helo_access hash:/usr/local/etc/postfix/smtp_helo_blacklist,
 reject_unlisted_recipient,
 check_policy_service inet:127.0.0.1:2525,
 reject_rbl_client list.dsbl.org,
 reject_rbl_client sbl-xbl.spamhaus.org, permit

P.S. Sulla porta TCP 2525 ho gld per il greylisting.

[modifica] Conclusioni

Il concetto di centralizzare l'autenticazione SMTP e IMAP vi permette di aggiungere e abilitare un utente semplicemente aggiungendo una riga nella table del database e una riga in virtual_mailboxes, e permette di tenere sotto controllo l'accesso nell'invio della posta.

Spero solo di essere stato esauriente !

[modifica] Links

http://www.slacky.eu/wikislack/index.php?title=Dovecot%2C_il_server_Imap_e_Pop3

http://www.dovecot.org/

http://www.postgresql.org/

http://www.postfix.org/


Autore: Antonio67 Data: Wed May 14 2008

Strumenti personali
Namespace

Varianti