Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/
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:
Dovecot is ingesteld om passwd + pam te gebruiken en SASL te exporten:
En pam staat zo ingesteld dat dovecot alleen users mag authenticeren die in de "imap" group zitten:
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.
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.
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/
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:
Verder wat postfix config:
En dan als laatste pam aanpassen met:
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
In mijn postfix.postfix_users table heb ik een extra kolom toegevoegt zodat die structuur er zo uit ziet:
SQL:
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.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`) ) |
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
Krijg het met dovecot 2 (ubuntu 11.10) niet met deze manier werkend. Iemand nog tips?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.
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 ]