Mailing list associazioni, Mailman e domini virtuali

Ciao a tutti,

giusto una breve news, ma che forse sarà utile a qualcuno: io e ric siamo qui a Bologna sul divano di casa sua e abbiamo aperto con grande sforzo la nuova mailing-list per le associazioni giovanili di Fabriano e dintorni: associazioni at raga10.org !

Ma perché un grande sforzo? Andiamo un attimo sul tecnico: abbiamo dovuto configurare i domini virtuali in mailiman. Usando il pacchetto debian abbiamo trovato alcuni problemi che ci hanno costretto a modificare il codice! Semplici correzioni che abbiamo riportato indietro dall’ultima release stabile di mailman, ma che abbiamo saputo risolvere solo avendo approcciato “didatticamente” il problema di più domini associati a mailman: non siamo andati a vedere howto precotti, ma ci siamo letti il manuale e… doveva funzionare!

Alla fine è stato abbastanza impegnativo e Riccardo più volte ha imprecato contro mailman, ma pare che funzioni. … e io mi sono anche divertito 🙂

Di seguito le semplici modifiche apportate che magari possono essere utili ad altri:

— mailman-pacco/newlist    2011-01-13 01:17:59.000000000 +0100
+++ /var/lib/mailman/bin/newlist    2011-01-13 01:18:13.000000000 +0100
@@ -204,7 +204,7 @@
                     langs = [lang]
                 else:
                     langs = [lang, mm_cfg.DEFAULT_SERVER_LANGUAGE]
–                mlist.Create(listname, owner_mail, pw, langs=langs)
+                mlist.Create(listname, owner_mail, pw, langs=langs, emailhost=emailhost, urlhost=urlhost)
             finally:
                 os.umask(oldmask)
         except Errors.BadListNameError, s:

— mailman-pacco/MailList.py    2011-01-13 01:18:33.000000000 +0100
+++ /var/lib/mailman/Mailman/MailList.py    2011-01-13 01:19:52.000000000 +0100
@@ -290,7 +290,7 @@
                 continue
             self._gui.append(getattr(Gui, component)())
 
–    def InitVars(self, name=None, admin=”, crypted_password=”):
+    def InitVars(self, name=None, admin=”, crypted_password=”, urlhost=None):
         “””Assign default values – some will be overriden by stored state.”””
         # Non-configurable list info
         if name:
@@ -322,7 +322,8 @@
         self.host_name = mm_cfg.DEFAULT_HOST_NAME or mm_cfg.DEFAULT_EMAIL_HOST
         self.web_page_url = (
             mm_cfg.DEFAULT_URL or
–            mm_cfg.DEFAULT_URL_PATTERN % mm_cfg.DEFAULT_URL_HOST)
+            mm_cfg.DEFAULT_URL_PATTERN % (urlhost or mm_cfg.DEFAULT_URL_HOST)
+    )
         self.owner = [admin]
         self.moderator = []
         self.reply_goes_to_list = mm_cfg.DEFAULT_REPLY_GOES_TO_LIST
@@ -471,7 +472,7 @@
     # List creation
     #
     def Create(self, name, admin, crypted_password,
–               langs=None, emailhost=None):
+               langs=None, emailhost=None, urlhost=None):
         assert name == name.lower(), ‘List name must be all lower case.’
         if Utils.list_exists(name):
             raise Errors.MMListAlreadyExistsError, name
@@ -499,7 +500,7 @@
         self._full_path = Site.get_listpath(name, create=1)
         # Don’t use Lock() since that tries to load the non-existant config.pck
         self.__lock.lock()
–        self.InitVars(name, admin, crypted_password)
+        self.InitVars(name, admin, crypted_password, urlhost=urlhost)
         self.CheckValues()
         if langs is None:
             self.available_languages = [self.preferred_language]

Un pensiero su “Mailing list associazioni, Mailman e domini virtuali

  1. Ragazzi, siete davvero forti!
    Credo che a darvi la soluzione sia stato lo stesso spirito di Stallman, che si è mosso, però, solo in seguito alle imprecazioni di Ric.
    Mi fate sapere quando approvano nel trunk principale la vostra patch? Così mettiamo un bollino sul nostro blog, tipo “Mailman patch approved!” e spammizzo la notizia 😛

    bravi voi.

    un saluto

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *