Avatar billede tigertool Nybegynder
09. marts 2004 - 22:57 Der er 62 kommentarer og
1 løsning

postfix med virtual fra mysql

Jeg sidder lige og små hygger mig med at få en postfix til at bruge virtuals fra en mysql db.

Jeg har følgende sat op:

main.cf:

command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
setgid_group = postdrop
biff = no
append_dot_mydomain = no
myhostname = test-server
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = test-server, localhost.localdomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
virtual_maps = mysql:/etc/postfix/virtual.cf

(Jeg har testet at postfix kører hvis jeg bruger en fil til virtuals)

i min virtual.cf:
user = postfix
password = XXXXXXX - syyy - XXXXXXX
dbname = postfix
table = virtual
select_field = goto
where_field = address
hosts = localhost

Jeg har sat en database op med bruger (Jeg har testet med mysql at det brugernavn og password virker).

min tabel ser således ud:
CREATE TABLE virtual (
  address varchar(255) NOT NULL default '',
  goto varchar(255) NOT NULL default '',
  UNIQUE KEY address (address)
) TYPE=MyISAM;

i tabellen har jeg tilføjet:

INSERT INTO virtual (address,goto) VALUES ('tigertool@domain.tld','tigertool');

brugeren tigertool er oprettet.

Jeg har konstant en
tail -f /var/log/syslog
kørende - og i den får jeg følgende fejl:

Mar  9 02:01:42 test-server postfix/smtpd[2149]: connect from unknown[10.0.0.200]
Mar  9 02:01:42 test-server postfix/smtpd[2149]: 948DA142B8: client=unknown[10.0.0.200]
Mar  9 02:01:42 test-server postfix/smtpd[2149]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (40)
Mar  9 02:01:42 test-server postfix/smtpd[2149]: reject: RCPT from unknown[10.0.0.200]: 451 <XXX@domain_a.tld>: Temporary lookup failure; from=<XXX@domain_a.tld> to=<tigertool@domain.tld>
Mar  9 02:01:52 test-server postfix/cleanup[2152]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (40)
Mar  9 02:01:52 test-server postfix/cleanup[2152]: warning: C2C0E142BD: virtual_maps map lookup problem for postmaster@test-server
Mar  9 02:01:52 test-server postfix/cleanup[2152]: warning: C2C0E142BD: skipping further client input
Mar  9 02:01:52 test-server postfix/smtpd[2149]: disconnect from unknown[10.0.0.200]

Hvad kan fejlen være?
filen /var/run/mysqld/mysqld.sock eksistere - desværre kan jeg ikke læse filen (men det burde jeg jo heller ikke kunne?)

Nogen der kan hjælpe mig videre herfra?
Avatar billede tigertool Nybegynder
09. marts 2004 - 22:58 #1
btw min mysql-server kører.
Avatar billede mfalck Praktikant
10. marts 2004 - 08:43 #2
den kan ikke finde mysqld.sock (den forventer at den er i /var/run/mysqld/mysqld.sock)

gør følgende:

find / -name mysqld.sock
(hvis /var/run/mysqld ikke eksisterer så skal du oprette kataloget)
cd /var/run/mysqld/
ln -s <sti_som_find_kommandoen_returnerede>
Avatar billede mfalck Praktikant
10. marts 2004 - 08:55 #3
ellers kan du se og ændre det i /etc/my.cnf
Avatar billede mfalck Praktikant
10. marts 2004 - 08:56 #4
argh - jeg kan da heller ikke finde ud af at læse inden ad .. den er der jo :-)
Avatar billede mfalck Praktikant
10. marts 2004 - 08:57 #5
du har oversat postfix med mysql-support ?
Avatar billede tigertool Nybegynder
10. marts 2004 - 13:31 #6
Jeg har lavet en apt-get install postfix postfix-mysql
Avatar billede mfalck Praktikant
10. marts 2004 - 13:47 #7
ja ok - ellers havde den vist også brokket sig over at den ikke kunne forstå mysql paramereten.

hvad siger

ls -l /var/run/mysqld/mysqld.sock
Avatar billede tigertool Nybegynder
10. marts 2004 - 17:40 #8
return:
srwxrwxrwx    1 mysql    mysql          0 Mar  9 20:48 /var/run/mysqld/mysqld.sock

Det ser ud som om at filen er tom?
Avatar billede mfalck Praktikant
10. marts 2004 - 20:09 #9
mja - "filen" er en socket - altså en måde hvor en proces kan skrive til en anden igennem, men af mere permanent karakter
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:14 #10
OK - er der en måde hvor jeg kan teste om det er socketen der er problemet?
Avatar billede mfalck Praktikant
10. marts 2004 - 20:24 #11
hm - i og med at filen er der så burde socketen også være okey. Du kan evt prøve at genstarte myslq-serveren
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:25 #12
Det har jeg prøvet - serveren har desuden været slukket hele natten.
Avatar billede mfalck Praktikant
10. marts 2004 - 20:27 #13
ok .. har du andre applikationer som bruger mysql lokalt ? hvis du har det så må det være postfix som slår sig .. ellers kan det være mysql
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:28 #14
Jeg har også lige prøvet at ændre brugeren i virtual.cf til root-brugeren. Dette giver stadig det samme resultat.
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:29 #15
Jeg kan connecte til mysql via MySQL CC som jeg har installeret på min klient-pc.
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:30 #16
jeg har også lige prøvet at lave en telnet 10.0.0.40 3306 fra min klient. Der er i al fald noget der kører på den port.
Avatar billede mfalck Praktikant
10. marts 2004 - 20:32 #17
ja - problemet er bare at for at sætte hastigheden op så bruger den ikke tcp/ip men socket. Det som jeg ville vide var om du evt bruger PHP eller perl-DBI til at lave nogen forespørglser (jeg kender desværre ikke mysql CC - så jeg kan ikke sige om den bruger sockets eller tcpip).
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:33 #18
MySQL CC bruger tcpip så vidt jeg husker.

Jeg bruger ikke andet på serveren. Jeg kan forsøge at connecte fra et php-dok til mysql, men bruger PHP socket, bruger PHP ikke tcpip?
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:36 #19
Jeg har lige prøvet fra php at hente lidt ud fra min virtual tabel i postfix databasen. Jeg kan fint hente det ud og få dette vist.
Avatar billede mfalck Praktikant
10. marts 2004 - 20:36 #20
jeg _mener_ at php bruger socket, men det skal nok lige undersøges først
Avatar billede mfalck Praktikant
10. marts 2004 - 20:38 #21
hov det er ikke noget så simplet som at postfix ikke kan få lov til at lave cd til det katalog hvor mysqld.sock ligger ?
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:41 #22
test-server:/var/run# ls -l
...
drwxr-xr-x    2 mysql    root        4096 Mar  9 23:42 mysqld
...

test-server:/var/run/mysqld# ls -l
total 4
-rw-rw----    1 mysql    mysql          4 Mar  9 23:42 mysqld.pid
srwxrwxrwx    1 mysql    mysql          0 Mar  9 23:42 mysqld.sock
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:42 #23
Er det ikke korrekt nok?
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:43 #24
Mar  9 23:52:46 test-server postfix/pickup[1664]: 2748213F37: uid=0 from=<root>
Mar  9 23:52:46 test-server postfix/cleanup[1820]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (40)
Avatar billede mfalck Praktikant
10. marts 2004 - 20:48 #25
hvad med

ls -ld /var/run

Har du prøvet at angive ip-adressen og se om det virker - og har du givet bruger "postfix" lov til at tilgå postfix-databasen fra localhost ?
Avatar billede tigertool Nybegynder
10. marts 2004 - 20:54 #26
test-server:/# ls -ld /var/run
drwxr-xr-x    6 root    root        4096 Mar  9 22:23 /var/run

Jeg har prøvet at skrive 127.0.0.1 i stedet for localhost og jeg har prøvet med root brugeren.
Avatar billede mfalck Praktikant
10. marts 2004 - 20:59 #27
får du noget i /var/log/mysqld.log ?
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:00 #28
Ved du forresten hvad der skal være i virtual tabellen?

I virtual filen skriver jeg altid:
######### virtual ###################
domain2.tld              virtuelt

user@domain.tld          user
#####################################
skal der også stå det i tabellen?
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:01 #29
Jeg får ingen fejl nu - men jeg synes ikke rigtigt at posten kommer igennem.

Jeg skiftede ip'en til at være min netkorts ip..
Avatar billede mfalck Praktikant
10. marts 2004 - 21:01 #30
ja - uden "#" dog :-)
Avatar billede mfalck Praktikant
10. marts 2004 - 21:02 #31
æh - det er ikke sådan at du kører postfix i et chrootet miliø ?
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:03 #32
Hvad skal genstartes efter man har ændret i en tabel? - og skal der bruges postmap ?
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:04 #33
hehe nu kom posten igennem... det føles dejligt.
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:05 #34
ang chroot så har jeg forresten lavet en:
test-server:/var/spool/postfix/var/run/mysqld# ls -l
total 0
lrwxrwxrwx    1 mysql    mysql          27 Mar  9 01:51 mysqld.sock -> /var/run/mysqld/mysqld.sock
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:09 #35
btw hvad med sorteringen i tabellen? kan jeg f.eks. indskrive user@domain.tld, user FØR jeg indskriver domain2.tld, virtuelt ???
Avatar billede mfalck Praktikant
10. marts 2004 - 21:09 #36
det er lidt farligt at lave symbolske links ud af dit chrootet miliø for det kan hackere bruge til at bryde ud af det !

der skal ikke genstartes noget når du sætter noget ind i tabellerne - det er jo ikke sendmail ;-) Nej - postfix kører en sql forespørgsel hver gang der kommer en mail og hvis der er tilføjet nye entries i tabellen så burde den opfatte det automatisk. Postmap bruger du kun til hash-filer
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:16 #37
Fedt.. og det kører bare.

Hvordan kan jeg ellers lave det, altså hvis jeg ikke kan bruge symbolske links?
Avatar billede mfalck Praktikant
10. marts 2004 - 21:23 #38
du kan bare bruge ip-adressen som du skrev virkede - der er lidt overhead på det - men det er ikke så slemt medmindre du regner med at modtage mange emails - hvis det er tilfældet så ville jeg nok installere endnu en mysql-server og lade den køre i det chrootede miljø
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:26 #39
Kan jeg ikke bare kopiere socketen ind i mappen i stedet for at linke den ind?
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:27 #40
- og ja, jeg regner med at modtage mange mails. Lige nu modtager jeg over 500 mails på dagen.
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:29 #41
Hvis jeg installere endnu en mysql-server i det chrootet miljø kan jeg så tilgå denne fra f.eks. php ?
Avatar billede mfalck Praktikant
10. marts 2004 - 21:33 #42
nej - du kan ikke kopiere den ind - det er ikke en rigtig fil så den kan ikke bare kopiere rundt. Som jeg ser det så kan du gøre fire ting:
1) bruge ip-adressen - det vil svare til at du brugte en anden server som db-server, så jeg anser det ikke som kritisk.

2) beholde det symbolske link som det er nu og så håbe på at der ikke kommer hackere på besøg. Jeg gætter på at script-kiddies ikke vil fange den pga det lidt specielle setup med postfix og mysql, og hvis det er en "ægte" hacker så skal han nok komme ind aligevel :-)

3) ændre i /etc/my.cnf så socketen ligger i det ovenstående katalog, men det kan bevirke at du også skal ændre i andre applikationer eller lave finten med symbolske links (bare den anden vej).

4) installere endnu en mysql-server.
Avatar billede mfalck Praktikant
10. marts 2004 - 21:34 #43
ja - du kan sagtens tilgå den - medmindre du kører din webserver i et chorootet miliø ... :-) chrooten gælder kun for postfix
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:36 #44
ok.
Jeg tror det bedste er at installere endnu en mysql. MEN hvordan gøres dette og hvordan tilgåes denne, den kan vel ikke arbejde på port 3306 også?

(Skal jeg oprette et nyt spm på dette?)
Avatar billede mfalck Praktikant
10. marts 2004 - 21:39 #45
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:42 #46
Tak - ang din 1. model mener du så at jeg skal ændre ipen i /etc/postfix/virtual.cf til at være mit netkorts ip under hosts?
Avatar billede mfalck Praktikant
10. marts 2004 - 21:45 #47
ja - det skal være den offenlige (hvad enten det er en "rigtig" eller en der er i private address space [192.168.0.x/10.0.0.x], men ikke 127.0.0.1)
Avatar billede mfalck Praktikant
10. marts 2004 - 21:46 #48
hvis du har så mange mails pt og forventer volumen vil vokse så vil det måske være en god ide at have en dedikeret database-server .. men det har jo noget at gøre med økonomien :-)
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:46 #49
ok, det er mere håndgribeligt synes jeg :) Men ellers er ideen god med en ny mysql-server, jeg føler det bare som et overkill. Desuden hvad kan en hacker få adgang til?
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:48 #50
Det kan du have ret i, på sigt sætter jeg flere servere op, skal bare lige have fundet pengene til det. Jeg havde tænkt mig en Dual-P4 server til håndtering af database, men mangler lige pengene til denne - desuden til en sådan server også bruge en masse strøm, og det er jo heller ikke helt billigt.
Avatar billede mfalck Praktikant
10. marts 2004 - 21:49 #51
ja det er nok lidt i overkanten at have to databaseservere kørende på samme system - omvendt så er mysql ikke det som belaster systemet så meget. Jeg tror også jeg ville have valgt at bruge ip-adressen.
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:51 #52
Jeg takker i al fald mange gange, endnu en gang. :) Nu tror jeg at jeg kan klare mig lidt igen.

Arbejder du meget med Linux til dagligt?
Avatar billede mfalck Praktikant
10. marts 2004 - 21:54 #53
et par råd omkring en database server er at du skal satse på ram og hurtige harddiske fremfor hurtige processorer, det er altid flaskehalse i en database-server. Og jeg ville nok overveje at bruge postgres-databasen istedet for mysql, men det er mere en personlig vurdering. Grunden til jeg ville vælge postgres er at jeg opfatter mysql mere på linie med access (fra MS), idet den ikke rigtigt kører noget reindeksering af tabellerne medmindre man tvinger den til det. Det er korrekt at den er ved at vokse sig stor .. men der er stadig lidt "legetøjsdatabase" over den (nu får jeg antageligvis alle mysql-tilhængere på exp.dk efter mig :-) )
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:56 #54
Jeg er MySQL-tilhænger og Access-hader, men jeg giver dig stadig 100% ret.
Avatar billede mfalck Praktikant
10. marts 2004 - 21:57 #55
ja og nej - linux bruger vi ikke (officielt set - men vi har en stående til at køre bugzilla) på mit arbejde (vi bruger windows 2000 og nogle solaris-kværne), men jeg bruger linux til en del fritidsprojekter og har brugt linux længe [første gang jeg prøvede linux var tilbage i 1992-1993].
Avatar billede tigertool Nybegynder
10. marts 2004 - 21:58 #56
Jeg overvejer selv postgresql - men jeg arbejder meget i PHP og mysql. jeg synes at mysql er glimrende til hjemmesider - men så heller ikke mere. Efter jeg begyndte at arbejde med InterBase fik jeg rigtigt øjnene op for hvad en database virkelig er og hvad den rent faktisk kan, her tænker jeg på triggers og SP som jo ikke rigtigt er med i MySQL endnu (dog skulle SP være med i v. 5, men jeg har ikke arbejdet med v. 5, da den stadig er i alpha)
Avatar billede mfalck Praktikant
10. marts 2004 - 21:59 #57
hehe ... ok - det er lidt hårdt at dømme mysql til at være en legetøjsdatabase - især hvis man ser på dens udbredelse og postgres mangel på samme.
Avatar billede mfalck Praktikant
10. marts 2004 - 22:03 #58
den klare fordel ved mysql er at den er ret hurtig til at læse i; en af grundene til at jeg mener at mysql (udover de ting du selv nævner) er at den også først nu er begyndt at håndhæve referentiel integritet, og det kan selv access *sigh* :-) På mit arbejde bruger vi Oracle og der kan man godt se at der er postet en del penge i udviklingen, men det får man så også lov til at betale for :-)
Avatar billede tigertool Nybegynder
11. marts 2004 - 09:35 #59
hmm.. eksperten gik ned i går da jeg var ved at skrive, nå men jeg ville bare sige tak - og fortælle at jeg har el blok 512 mb PC400 DDR Ram i min server.

Det eneste jeg mangler nu er at få apache's VirtualHost over i en database.. hehe
Avatar billede mfalck Praktikant
11. marts 2004 - 09:40 #60
selv tak - det er rart at hjælpe når det lykkes :-)

ja - det ville være rart hvis httpd.conf kunne lægges ind i en database; du må da gerne sige til hvis du finder en løsning på det :-)
Avatar billede tigertool Nybegynder
11. marts 2004 - 09:43 #61
OK, det skal jeg nok. Jeg er pt igang med at søge på google efter det :)
Avatar billede tigertool Nybegynder
11. marts 2004 - 09:55 #62
http://guides.printf.dk/perl-dbi.htm <-- jeg tror der er noget der :)
Avatar billede tigertool Nybegynder
11. marts 2004 - 10:08 #63
Hmm.. men der bliver VirtualHosts først dannet ved reload så vidt jeg kan se - men så er det vel bare at sætte en reload op af apache med cron :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester