Mailman

Sziasztok!

A következőt szeretném megvalósítani.

Adott egy levlista, az xy.abcd.loc serveren!

A levlistan levo listatagok lenyegeben cegek , akiknek heti rendszerességgel küldünk hírleveleket!

A problemam a kovetkezo:

Adott a levlistan egy Abcd Kft , illetve egy Xycv Zrt.

Hogyan tudom azt megoldani, hogy ha Mozilla Thunderbird hasznalataval kuldok egy levelet a levlistara , akkor a listatagok szamara kimeno levelben egyedi cegenkenti megszolitas legyen!

Pl: Tisztelt Abcd Kft.

vagy

Pl: Tisztelt Xycv Zrt

Illetve a leveleket oly módon küldi a mailman , mintha ő egy személy lenne, tehát a listatagok a levlista altal kuldott levelek to reszeben a sajat cimuket latjak, felado pedig az a szemely , aki feladta a levelet , tehat nem a lista cimet latjak feladokent.

A problema az ,hogy a kuldott levelekben van minden esetben egy masolat header, ami azt mutatja , hogy a levlista szamara erkezett a kikuldott levelelbol egy masolat!

Achivalas ki van kapcsolva , és egyéb Webes feluleten lathato opcio is , ami masolatkuldessel kapcsolatos , legalabbis amit megtalaltam kikapcsoltam , megis benne van a kikuldott levelekben a masolat header!

Kerdsem az lenne , hogyan tudom megoldani , hogy a mailman personal config modban ne kuldjon masolatot a levlistanak , level kuldesekor?

A válaszokat , és a segítséget előre is köszönöm!

Üdv,

Gyuri

Hozzászólások

Sehogy, ehhez hirlevelkuldo sw kell.

Hello!

Mailman segitsegevel , eddig mindent meg tudtam oldani, ami a csoportos levelekuldeshez kellett, csak most meg kellett megszemelyesitenem , felsobb utasitasra , es a mailman mukodik is personalized modban , tehat ugy kuldi a leveleket , mintha egy termeszetes szemely lenne , viszint a masolatot nem kellene kuldenie a levlistanak,mert igy nem igazan tunik ugy , mintha a mailman egy szemely lenne !Illetve ezt a levelekben alkalmazando egyeni megszolitast nem tudom megoldnani , bar nem biztos , hogy ezt mailmannel kell megoldani! Nem szeretnem hirlevelkuldore cserelni a mailmant , mert mar rengeteg cím van benne! Biztosan nem lehet ezt a masolat kuldese funkciot valahogy kikapcsolni?

Ha kevés számú levél van, akkor küld el körlevélvarázslóval msoffice-ban. :)
Komolyabb hírlevélnél valóban csak erre szakosodott szolgáltatóval van értelme probálkozni (pl. mailchimp), ellenkező esetben a küldés eredményessége a 0-hoz fog konvergálni.

A listatagokat ki tudod listazni a list_members paranccsal.

Csak mailmannal nem tudod megoldani.
Vagy atirod, hogy hasznaljon egy makrot, ott es azt, ahol kell. De akkor ez mar egy mailman fork lesz.

Vagy az smtp szerveren irod at az informaciot.

Persze legegyszerubben ugy jarsz, ha meg a mailman elott irod at es egyenkent kuldod ki a leveleket a mailman-t kihagyva, ebben az esetben a mailman-t redukalod egy email cim kezelo rendszerre.

tompos

ui.: Mondj fel, ha ilyen fonokod van.

Első munkahelyem , és nem igazán van más munkalehetőség ilyen végzettséggel/tapasztalattal , szóval nem mondhatok fel , az túl nagy luxus lenne , főleg ebben a gazdasági helyzetben!:S

A makro lehetőséget hanyagolom akkor , de esetleg arra nem tudtok megoldást , hogy a mailman ne küldjön másolatot a levlistának abban az esetben , ha personalized modra van allitva , tehát amikor egy természetes személynek van "álcázva" a mailman , akkor sajnos küld egy másolatot a levlistának , ami headerkent van feltüntetve az elküldött levelekben , és így már nem igazán tűnik személyesnek , mert ebből a headerbol már kiderül , hogy a levelet nem egy természetes ember , hanem egy levlista küldte , és az úgy nem jó!

Láttam neten olyan megoldast , hogy az X-Mailman-Copy headert , illetve egyéb headereket , amelyek a kiküldött levelekben vannak , ki lehet valahogy szedni , csak még nem jöttem rá , hogyan csináljam...

Ha ebben tudnátok segíteni , vagy legalább támpontot adni , azt nagyon megköszönönném....

Meglestem ezt a header_checks bejegyzést a main.cf -ben , de szerintem ez arra való , hogy ha adott (regexp kifejezéssel egyező) kulcsót talál valamely levélben , akkor eldobja azt! Javítsatok ki , ha tévedek! Nekem viszont arra lenne szükségem , hogy azon levelekben amiket a mailman kiküld a tagok számára , a cc header , vagyis a másolat mező ne jelenjen meg , mert mikor kimegy egy levél akkor abban látszik , hogy a levelezőlista kapott egy másolatot a levélből,és így hitelét veszti a personalized config..:S
Szóval valahogy azt kellene elérnem , hogy a Postfix vagy a Mailman mellőzze a cc header küldését a levelekben!

"Meglestem ezt a header_checks bejegyzést [...], de szerintem ez arra való , hogy ha adott [...] kulcsót talál valamely levélben , akkor eldobja azt!"

Először is megnézed a man 5 postconf header_checks bekezdését. Ott ezt találod:
header_checks (default: empty)
    Optional lookup tables for content inspection of primary non-MIME message headers, as specified in the header_checks(5) manual page.

Majd a hivatkozásnak megfelelően elolvasod a man header_checks TABLE FORMAT, és különösen az ACTIONS részeit, ezen belül is az IGNORE-t (vagy REPLACE-t). A DISCARD is egy lehetőség, de nem az egyetlen.

Sziasztok!
A problémát sikerült megoldanom , vagyis azt a problemat , hogy a mailman ne küldjön másolatot , vagy legalábbis az általa küldött levelekben ne szerepeljen a Másolat azaz a [Cc] header!

A megoldás pedig a következő volt:

A mailman 2.1.16 előtti verzókban van egy BUG , amit azt eredmenyezi , hogy a mailman altal kuldott levelekbe beletesz egy Cc headert , így úgy tűnik mintha a mailman nem egy termeszetes szemely lenne , hanem egy levlista!

A BUG-ot úgy lehet javítani , hogy :
A usr/lib/mailman/Mailman/Handlers/AvoidDuplicates.py fájl utolsó sorában lévő
# RFC 2822 specifies zero or one CC header
del msg['cc']
msg['Cc'] = COMMASPACE.join([formataddr(i) for i in
ccaddrs.values()]

bejegyzést cseréled

erre a bejegyzésre:

# RFC 2822 specifies zero or one CC header
del msg['cc']
if ccaddrs:
msg['Cc'] = COMMASPACE.join([formataddr(i) for i in
ccaddrs.values()])

a két bejegyzés között egy egész if különbség van!

Mented a szerkesztett fájlt , és restartolod a mailmant!

Ez Postfix esetén nem biztos , hogy megoldja a Cc header eltávolításának problemajat.

Viszont , a header_checks fájl manipulálásával a probléma orvosolható , ezen a módon:
nano /etc/postfix/main.cf
aktivva teszed az alabbi sort (kiveszed elole a komment jelolest (#):

header_checks = regexp:/etc/postfix/header_checks

Aztan:

nano /etc/postfix/header_checks

És a fájl végére beszúrod az alábbi sort:

/^Cc:/ IGNORE

mented a fajlt , aztan postfix & mailman service restart

Ezen művelet hatására a postfix nem tesz Cc headereket az altala kuldott levelekbe , es a Mailman pedig felfogja , hogy neki ezt kell csinalnia!

Nem biztos , hogy mindenki számára optimális ez a megoldás , de ez is egy megoldás végülis...

> A problémát sikerült megoldanom , vagyis azt a problemat , hogy a mailman ne küldjön másolatot , vagy legalábbis az általa küldött levelekben ne szerepeljen a Másolat azaz a [Cc] header!

Illusztralnad, mi is volt a problema?
Ejszakaztam, kicsit lassu a felfogasom.

10x
tompos

A probléma a következő volt:

Azt kellett megoldanom , hogy a mailman úgy viselkedjen , mint ha egy természetes személy , és nem egy levlista lenne.

Így be kellett úgy konfiguralnom , hogy a mailman átlal kiküldött levelekben a headerek a következőképpen nézzenek ki:

From: Feladó címe
To: Levlista tag címe , és nem pedig a levlista címe!
Cc: Ezt a headert kellett eltüntetnem!

És ugyebar a levlista ugy mukodik , hogy a levilista cimere kuldesz egy mailt , es a levlista pedig azt a levelet kikuldi a listatagok szamara!

A Cc headert pedig siekrült eltávolítanom az általam leírt modszerrel , így a problema orvosolva lett!

En mar egy elore (nem altalam) konfigolt mailmannel dolgoztam , abban a hiba meg jelen volt (vagy csak valaki belepiszkált az AvoidDuplicates.py fajlba), mindegy ezt javitottam az altalad emlitett link szerint.

Mailman alapbol kuldd Cc headert , nem lehetett kikapcsolni, sajnos akkor is kuld cc headert, ha nem allitom be a levkliensben, (ez csak a mailman szamara kuldott levleekre vonatkozik). Ezert tettem IGNORE statusra a Cc headert a postfix headers_check configjaban!

A gányolás gyanúját alátámasztandó:

Én a mailman verziójaként a Squeezben 2.1.13-at látok. És az az ominózus if is a helyén van:


# grep -A 3 'RFC 2822' /usr/lib/mailman/Mailman/Handlers/AvoidDuplicates.py
    # RFC 2822 specifies zero or one CC header
    del msg['cc']
    if ccaddrs:
        msg['Cc'] = COMMASPACE.join([formataddr(i) for i in ccaddrs.values()])
#

A Lennyben meg 2.1.11 volt, és már abban is gyárilag megvolt ez az if, de a 2.1.12 csak az unstable-ig és testingig jutott el, stable-ben soha nem szerepelt. De ha régen valamiért testingből lett feltéve, akkor is már az upgrade után a Squeeze-ből származó 2.1.13 kellene hogy ott legyen az iffel egyetemben.

De ilyen forrásból sem jöhetett, mivel a hivatalos mailman 2.1.12 verzióban is megvolt már ez a feltétel.

Ebből következően valószínűleg az előd műve volt a feltétel kiiktatása.

Hírlevél kontra körlevél. Az előbbi azonos tartalom sok címzetthez, az utóbbi meg megszemélyesített tartalom minden címzettnek.
Én a következőt csinálnám: e-mail cím - megszólítás párosok db-ből kiszedni, a megszólítással átvakarni a body-ba kerülő tartalmat, majd pl. mimeconstruct-tal összeraknám/elküldeném a levelet.

+1, pl. ilyen ficsőrökkel php-ban:


$message = str_replace( '%%PERSON%%', ( empty( $data['name'] ) ) ? 'Partnerünk' : $data['name'], $_POST['content'] );
$ok = mail( "{$data['name']} <{$data['email']}>", '=?UTF-8?B?'.base64_encode($_POST['subject']).'?=', $message, $custom_headers );

Írod a levélkédet, Tiszelt %%PERSON%%!
..
Küldéskor pedig frankón behelyettesíti adatbázisból. Ha üres ez a mező, jobb híján "Partnerünk" kerül.
Egyéb mezőket is felvehetsz ilyen alapon.
For ciklussal pedig kipörgeted soronként a mail címeket a sorban lévő további adatokkal.