Поскольку оба перловых milter-модуля оказались непригодными к употреблению, пришлось поставить python-milter и осваивать питон. В целом он мне нравится – очень читабельный код. Из синтаксиса больше раздражает отсутствие явного обозначения концов блоков, чем само оформление блоков отступами.
А вот отсутствие типизированных объявлений сыграло со мной злую шутку. Написал маленький фрагмент:
def body(self,chunk):
self.log("body chunk")
self.body += chunk
return Milter.CONTINUE
и потом три часа пытался понять, почему во время выполнения оно вылетает с exception’ом “str is not callable”.