• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af peque | 13.03.2014 09:22

lidt problemer med Mailserver og maildir path

Hjælp generelt
Hej Forum.
Jeg har et lille problem som jeg ikke lige kan greje og lige derfor har nogle spørgsmål:

Jeg er ved at lave en mailserver hvor jeg gerne vil definere selve mailboxes i en bestemt sti. Til dette bruger jeg Postfix, postfixadmin og dovecot.

Min generelle sti til hvor mailbox skal ligge er : /storage/domain.dk/mail/user@domain.dk - således at alting er samlet under det konkrete domæne.
jeg har beskrevet følgende sti i min dovecot installation: mail_location = maildir:/storage/%d/mail/%u/

I min postfixadmin - er jeg dog lidt i tvivl omkring dette - hvor man skal stien og hvordan :

// Mailboxes
// If you want to store the mailboxes per domain set this to 'YES'.
// Examples:
// YES: /usr/local/virtual/domain.tld/username@domain.tld
// NO: /usr/local/virtual/username@domain.tld
$CONF['domain_path'] = 'NO';
// If you don't want to have the domain in your mailbox set this to 'NO'.
// Examples:
// YES: /usr/local/virtual/domain.tld/username@domain.tld
// NO: /usr/local/virtual/domain.tld/username
// Note: If $CONF['domain_path'] is set to NO, this setting will be forced to YES.
$CONF['domain_in_mailbox'] = 'YES';
// If you want to define your own function to generate a maildir path set this to the name of the function.
// Notes:
// - this configuration directive will override both domain_path and domain_in_mailbox
// - the maildir_name_hook() function example is present below, commented out
// - if the function does not exist the program will default to the above domain_path and domain_in_mailbox settings
$CONF['maildir_name_hook'] = 'NO';

/*
maildir_name_hook example function

Called by create-mailbox.php if $CONF['maildir_name_hook'] == ''
- allows for customized maildir paths determined by a custom function
- the example below will prepend a single-character directory to the
beginning of the maildir, splitting domains more or less evenly over
36 directories for improved filesystem performance with large numbers
of domains.

Returns: maildir path
ie. I/example.com/user/
*/
/*
function maildir_name_hook($domain, $user) {
$chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";

$dir_index = hexdec(substr(md5($domain), 28)) % strlen($chars);
$dir = substr($chars, $dir_index, 1);
return sprintf("%s/%s/%s/", $dir, $domain, $user);
}

Hvordan skal jeg konfigurere dette således den kigger på den samme mailpath ?

Min logfil får jeg følgende error ved aty prøve at sende til den postkasse:
Mar 13 09:13:59 Quasimodo postfix/virtual[13058]: warning: maildir access problem for UID/GID=5000/5000: create maildir file /storage/r@domain.dk/tmp/1394698439.P13058.quasimodo: Permission denied
Mar 13 09:13:59 Quasimodo postfix/virtual[13058]: warning: perhaps you need to create the maildirs in advance
Mar 13 09:13:59 Quasimodo postfix/virtual[13058]: E706141524: to=, relay=virtual, delay=568, delays=568/0.01/0/0.08, dsn=4.2.0, status=deferred (maildir delivery failed: create maildir file /storage/r@domain.dk/tmp/1394698439.P13058.quasimodo: Permission denied)

Hvor den ved at sende der - kigger er helt andet sted - og som jeg umiddelbart kan se - er dette den indstilling i /etc/postfix/main.cf hvor jeg har min virtual_mailbox_base = /storage --> mnen hvordan definerer jeg denne path - således denne også kigger på
/storage/domain.dk/mail/mailuser ?

Pft
Per
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer4

# 1

11 år 3 måneder siden

Permalink

Indsendt af lbm den 13. marts 2014 kl. 10:44

Permalink

Er det ikke default, pånær

Er det ikke default, pånær den "mail" subfolder du ønsker.... Men det er måske denne mail subfolder der er problemet?

i main.cf filen
virtual_mailbox_base = /var/spool/postfix/virtual
home_mailbox = Maildir/

pwd
/var/spool/postfix/virtual
drwx------ 4 postfix postfix 4096 Oct 3 2012 example1.com
drwx------ 3 postfix postfix 4096 Sep 28 19:40 example2.com


ll example1.com/
total 16
drwx--S--- 3 postfix postfix 4096 Feb 5 2008 user1
drwx--S--- 3 postfix postfix 4096 Sep 1 2008 user2
drwxr-sr-x 4 postfix postfix 4096 Feb 5 2008 user3
drwxr-sr-x 3 postfix postfix 4096 Feb 5 2008 user4

Når dette er sagt, har postfix så lov til at skrive i mappen "/storage/r@domain.dk" og/eller "/storage/r@domain.dk/tmp/" ?Det virker umiddelbart ikke sådan.


--edit--
Det er styret via virtual_mailbox_maps.

i main.cf filen
virtual_mailbox_maps = hash:/etc/postfix/virtualmailboxmaps.cf


/etc/postfix/virtualmailboxmaps.cf
# virtual_mailbox
#
user1@example1.com example1.com/mail/user1/
user1@example2.com example2.com/mail/user1/

Mener du skal køre postmap bagefter, men er ikke 100% sikker. Jeg kører det via SQL og ikke "flat files".
postmap /etc/postfix/virtualmailboxmaps.cf

Og så er det vigtigt at du afslutter med /, ellers vil den kører som mbox og ikke Maildir.
  • Log ind eller opret dig for at tilføje kommentarer

# 2

11 år 3 måneder siden

Permalink

Indsendt af peque den 13. marts 2014 kl. 11:48

In reply to Er det ikke default, pånær by lbm

Permalink

Hej Ibm - Tak for

Hej Ibm - Tak for svaret.
Postfix har adgang og skriverettigheder på filer i biblioteket /storage/domain.dk/mail/ Hvor mailadressen så vil ligge som r@domain.dk

meningen var lidt at hoste for venner og bekendte - for sjov og ballade - Derfor er mit sti lavet som følgende for hvert domæne:
/storage/domain.dk - Under denne mappe - er der flere undermapper så som www og mail.Men så skal jeg jeg tilføje hvert domæne samt alle deres mailadresser jeg hoster i min /etc/postfix/virtualmailboxmaps.cf fil....
Som jeg forstår dette ? Kan man ikke sætte denne sti permanent - således at uanset hvor mange domæner man hoster - så ligger stien predefineret - da stien til mailmappen vil være den samme konstant!

Som min del af main.cf ser ud vedr virtualhosting:
######### Virtual User Configurations ##########
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
#virtual_mailbox_limit = 5120000000
virtual_minimum_uid = 5000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_mailbox_base = /storage
virtual_transport = virtual


Hvor jeg håbede man kunne sætte virtual_mailbox_base = /storage/%d/mail/%u hvor %d er domain og %u er user ?
##Edit##
Alternativt kan man sætte stien i sin mysql/mailbox table (hvor den står til kun at kigge på mailadresse )
  • Log ind eller opret dig for at tilføje kommentarer

# 3

11 år 3 måneder siden

Permalink

Indsendt af lbm den 13. marts 2014 kl. 16:39

Permalink

Hvordan ser queryen ud i

Hvordan ser queryen ud i denne fil, den bør select maildir ud...?
/etc/postfix/mysql_virtual_mailbox_maps.cf

Umiddelbart skal du kigge hvor den hiver maildir path'en fra. Dette felt kan f.eks så være "example1.com/mail/user1/Maildir/"
Dette felt er du nødt til at sætte for alle dine brugere. Jeg tror ikke man kan gøre det på en nemmere måde, ved at tvinge et path indimellem. Det skulle være hvis du kan lave en concat select i postfix mysql querien, men det aner jeg ikke om den understøtte, og jeg ved heller ikke om det vil virke i tilfælde, da du skriver et path indimellem. (hvis det giver mening)...

Den fulde path vil herefter være "/storage/example1.com/mail/user1/Maildir/" , såfremt du har sat virtual_mailbox_base = /storage, som duhar nævnt tidligere.

Hiver den dette maildir felt et sted fra, som bruges andre steder fra, kan du ændre MySQL schemaet og indsætte et nyt felt, indsætte det dir du vil benytte og herefter ædre din /etc/postfix/mysql_virtual_mailbox_maps.cf fil så den henter det fra dette felt.

  • Log ind eller opret dig for at tilføje kommentarer

# 4

11 år 3 måneder siden

Permalink

Indsendt af peque den 15. marts 2014 kl. 08:47

Permalink

Hej IBM.
Jeg har lige måtte

Hej IBM.
Jeg har lige måtte ligge syg - så derfor ventetid:

user = postfix
password = MitPassword
hosts = 127.0.0.1
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username = '%s' AND active = '1'

Som jeg umiddlebart kan læse mig frem til burde det fungerer med en CONCAT løsning - men lige hvordan kan jeg ikke lige gennemskue.
På længere sigt vil jeg prøve mere en løsning den vej rundt - men lige nu tilføjer jeg bare den korrekte stii Table Mailbox under maildir og opdaterer dette felt manualt - indtil videre
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0
Linux fra begynder til professionel af O'Reilly 0

Seneste aktivitet

Open Source-eksperimentet 3
Nulstilling af adgangskode 5
PCLinuxOS 24
Gode anmeldelser Zorin OS 17.3 2
"Intet realistisk alternativ" - mig i r*ven 15
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2
Vanilla OS 15
Pepsi Challenge 4
Linuxin er nu migreret til Drupal 11 13
Et Dansk alternativ til Facebook 18
Ekstern Blu-ray-brænder, der fungerer med PCLinuxOS 3

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !