Postfix: mogući zaostali procesi prilikom nadogradnje sa sendmaila

 Kod nadogradnje složenijih servisa, koji imaju nekoliko daemona i međuovisnosti poput sendmaila (koji ovisi o clamavu, sophosu i milteru), lako je moguće da se pojave problemi. No, u gotovo svim slučajevima ti se problemi lako rješavaju.

Najčešći problem je zaostanak nekog od procesa, pa se tako Postfix ne može pokrenuti jer je port 25 još uvijek "zauzet" sa sendmail procesom, "nestao" je socket ili slično. Simptomi su lako uočljivi u mail.logu:

May 28 16:43:24 host sm-mta[9059]: l4SEhO8J009059: Milter (amavis-milter): to error state
May 28 16:43:24 host sm-mta[9059]: l4SEhO8J009059: Milter: initialization failed, temp failing commands
May 28 16:43:24 host sm-mta[9060]: l4SEhO3t009060: Milter (amavis-milter): local socket
name /var/lib/amavis/amavisd-new-milter.sock unsafe

Poruke mogu biti i drugačije, ali problem je isti: mail ne radi. Problem je lako rješiv jednostavnim restartom poslužitelja, čime se ubijaju svi zaostali procesi i Postfix može nesmetano raditi.

No, problem nastaje u trenutku kad nije povoljan trenutak za restart poslužitelja, jer ipak treba obavijestiti korisnike da će nastupiti prekid - možda upravo korisnici objavljuju web stranice i slično. Srećom, ovu operaciju možete izvesti i ručno. Prvo treba provjeriti koji su procesi zaostali:

# pgrep milter
3543
# pgrep sendmail
4232

Navedene procese ubijte s naredbom "pkill":

# pkill -9 milter
# pkill -9 sendmail

Svakako provjerite jesu li se procesi uistinu pogasili:

# pgrep milter
# pgrep sendmail
#

Slijedeći korak je restart amavisa, koji će znati sam pokrenuti postfix i clamd:

# /etc/init.d/amavisd-cn restart

U logovima sad ne bi trebalo biti problematičnih poruka, a ispravan rad će ostaviti otprilike ovakav trag:

May 31 14:05:47 host postfix/smtpd[3972]: connect from localhost.carnet.hr[127.0.0.1]
May 31 14:05:47 host postfix/smtpd[3972]: 7AC5D4183: client=localhost.carnet.hr [127.0.0.1]
May 31 14:05:47 host postfix/cleanup[3965]: 7AC5D4183: message-id=<Pine.LNX.4.62.0
205311543520.3652@carnet.hr>
May 31 14:05:47 host postfix/smtpd[3972]: disconnect from localhost.carnet.hr[127.0.0.1]
May 31 14:05:47 host amavis[3770]: (03770-05) Passed, <posiljatelj@domena.hr> ->
<primatelj@carnet.hr>, Message-ID: <Pine.LNX.4.62.070543534530.3932@carnet.hr>, Hits: -0.784
May 31 14:05:47 host postfix/smtp[3967]: 28C5F4681: to=<primatelj@carnet.hr>, relay=127.0.0.1[127.0.0.1],
delay=3, status=sent (250 2.6.0 Ok, id=03770-05, from MTA: 250 Ok: queued as 7CC1D4183)
May 31 14:05:47 host postfix/qmgr[1974]: 28C5F4681: removed

Ukoliko ručno ne uspijete "probuditi" mail podsustav, uvijek ostaje opcija restarta poslužitelja, jer se ne isplati gubiti vrijeme na traženje greške, dok (nervozni) korisnici čekaju da mail proradi.

Kako instalacija postfixa ne briše postavke sendmaila, možete obrisati sve tragove sendmaila naredbom (ako imate access listu, sačuvajte je prije toga):

# dpkg --purge sendmail-base

Naredba "sendmail" koja se pojavljuje u /usr/sbin/ je postfixova "dummy" naredba, uvedena smao zbog kompatibilnosti sa mnogim programima koji očekuju sendmail na tom mjestu. Ne treba ju miješati sa originalnim programom sendmail. Slično je i s nardbom "mailq", iako istu stvar radi "postqueue -p".

 

Vijesti: 
Kuharice: 
Kategorije: 
Vote: 
0
No votes yet