[Postfix] Sasl authenticatie voor bepaalde gebruikers

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 04-10 21:53
Ik heb met postfix en sasl een configuratie waarbij er op de smtp server geauthenticeerd kan worden met login gegevens. Hiervoor word de saslauthd gebruikt die gebruik maakt van de shadow methode.

Het resultaat is dat elke gebruiker geauthenticeerd kan worden. Alleen is dat niet geheel de bedoeling, omdat er naast mailgebruikers ook andere gebruikers zijn die juist geen gebruik mogen maken hiervan.

Is er een methode om deze gebruikers toch niet te laten authenticeren. Gebruik maken van sasldb is geen optie, omdat er dan 2 plekken zijn waar eigenlijk wachtwoorden bijgehouden worden. (plus het word niet aangeraden).

Hoe kan ik dit voor elkaar krijgen? Authenticatie tegen kerberos is ook geen optie, omdat dat niet aanwezig is.

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


Acties:
  • 0 Henk 'm!

  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 03-10 18:29

deadinspace

The what goes where now?

Op mijn server heb ik dat als volgt opgelost:

Naast postfix is ook dovecot als IMAP server aanwezig. Postfix gebruikt de SASL server van dovecot:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth


Dovecot is ingesteld om passwd + pam te gebruiken en SASL te exporten:
auth default {
    mechanisms = plain
    passdb pam { }
    userdb passwd { }
    user = root
    socket listen {
        client {
            path = /var/spool/postfix/private/auth
            mode = 0660
            user = postfix
            group = postfix
        }
    }
}


En pam staat zo ingesteld dat dovecot alleen users mag authenticeren die in de "imap" group zitten:
# /etc/pam.d/dovecot
#%PAM-1.0

# Users must be in the imap group
auth required pam_succeed_if.so quiet_success user ingroup imap

@include common-auth
@include common-account
@include common-session


Gebruikers zijn dus op één plaats gedefinieerd (de gebruikelijke passwd + shadow), en dmv Unix groups kun je aangeven wie mag imappen/smtpen en wie niet. Deze setup bevalt me erg goed.

Als je niet de optie hebt om dovecot te gebruiken: misschien dat saslauthd ook via pam kan werken? Dan kun je voor saslauthd een vergelijkbare pam-config schrijven.

Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 04-10 21:53
PAM zou wellicht nog een optie kunnen zijn. Daar moet ik nog even mee gaan stoeien voor het postfix gedeelte.

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 09:53

Kees

Serveradmin / BOFH / DoC
Ik heb het net iets anders opgelost.

In mijn postfix.postfix_users table heb ik een extra kolom toegevoegt zodat die structuur er zo uit ziet:
SQL:
1
2
3
4
5
6
7
8
9
10
CREATE TABLE `postfix_users` (
  `id` varchar(128) NOT NULL DEFAULT '',
  `address` varchar(128) NOT NULL DEFAULT '',
  `password` varchar(128) NOT NULL,
  `maildir` varchar(255) NOT NULL DEFAULT '',
  `expire` int(11) unsigned NOT NULL DEFAULT '0',
  `smtp` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `address` (`address`)
) 
De expire en smtp zijn 'nieuw', daarmee kan ik adressen op een bepaalde tijd expiren, en kan ik per account instellen of deze smtp mag doen of niet.

Verder wat postfix config:
code:
1
2
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd

code:
1
2
3
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true

En dan als laatste pam aanpassen met:
code:
1
2
auth    required   pam_mysql.so user=postfix passwd=**** host=127.0.0.1 db=postfix table=postfix_users usercolumn=id passwdcolumn=password crypt=1 where=smtp=1
account sufficient pam_mysql.so user=postfix passwd=**** host=127.0.0.1 db=postfix table=postfix_users usercolumn=id passwdcolumn=password crypt=1 where=smtp=1

En daarmee werkt het; in de laatste file bouw je zeg maar een query alla 'select id from postfix_users where id = id and password=crypt($password) and smtp=1'.

Die expire gebruik ik overigens alleen bij courier imap/pop, zodat een gebruiker een tijd lang wel mail kan ontvangen, maar als hij zijn mailbox wil checken, krijgt hij een error. En na een maand een error gegeven te hebben gooit een crontabje zijn adres uit de db + zijn mailbox naar /dev/null

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • Zjemm
  • Registratie: Februari 2001
  • Laatst online: 01-10 20:49

Zjemm

...

deadinspace schreef op vrijdag 02 december 2011 @ 14:52:
Op mijn server heb ik dat als volgt opgelost:

Naast postfix is ook dovecot als IMAP server aanwezig. Postfix gebruikt de SASL server van dovecot:
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth


Dovecot is ingesteld om passwd + pam te gebruiken en SASL te exporten:
auth default {
    mechanisms = plain
    passdb pam { }
    userdb passwd { }
    user = root
    socket listen {
        client {
            path = /var/spool/postfix/private/auth
            mode = 0660
            user = postfix
            group = postfix
        }
    }
}


En pam staat zo ingesteld dat dovecot alleen users mag authenticeren die in de "imap" group zitten:
# /etc/pam.d/dovecot
#%PAM-1.0

# Users must be in the imap group
auth required pam_succeed_if.so quiet_success user ingroup imap

@include common-auth
@include common-account
@include common-session


Gebruikers zijn dus op één plaats gedefinieerd (de gebruikelijke passwd + shadow), en dmv Unix groups kun je aangeven wie mag imappen/smtpen en wie niet. Deze setup bevalt me erg goed.

Als je niet de optie hebt om dovecot te gebruiken: misschien dat saslauthd ook via pam kan werken? Dan kun je voor saslauthd een vergelijkbare pam-config schrijven.
Krijg het met dovecot 2 (ubuntu 11.10) niet met deze manier werkend. Iemand nog tips?
Lijkt me handig om geen 2 databases. Te hoeven. Hebben maar gewoon gebruik maken van de bestaande passwd file.

de bedoeling is om ook vanaf mijn mobiel mail via mijn mail server te kunnen versturen. anders moet ik de smtp server van mijn provider gebruiken en dat vind ik dan weer minder leuk.

[ Voor 6% gewijzigd door Zjemm op 01-01-2012 15:19 ]

opensecure.nl