Exemple #1
0
def file(src, dst, message, key):

    # ignore any message that is a tickler message
    if 'x-tickler' in message: return

    # notify, but only if from a VIP

    # extract addr from string in fmt "Joe P. Quinn <*****@*****.**>"
    from_header = message.get('from', '')
    from_match  = re.search("[^ <]+@.[^ >]+", from_header)

    if from_match:
        from_addr = from_match.group(0)
        if from_addr in VIPs.keys():
            notify(message)

    else:
        print "bad from address:", from_addr

    # file away, no matter whether from VIP or not
    print("mv %s/%s -> %s" % (maildirname(src), message.get("subject", ''), maildirname(dst)))
    dst.lock()
    dst.add(message)
    dst.flush()
    dst.unlock()
    src.lock()
    src.discard(key)
    src.flush()
    src.unlock()
Exemple #2
0
def file(src, dst, message, key):

    # ignore any message that is a tickler message
    if 'x-tickler' in message: return

    # notify, but only if from a VIP

    # extract addr from string in fmt "Joe P. Quinn <*****@*****.**>"
    from_header = message.get('from', '')
    from_match = re.search("[^ <]+@.[^ >]+", from_header)

    if from_match:
        from_addr = from_match.group(0)
        if from_addr in VIPs.keys():
            notify(message)

    else:
        print "bad from address:", from_addr

    # file away, no matter whether from VIP or not
    print("mv %s/%s -> %s" %
          (maildirname(src), message.get("subject", ''), maildirname(dst)))
    dst.lock()
    dst.add(message)
    dst.flush()
    dst.unlock()
    src.lock()
    src.discard(key)
    src.flush()
    src.unlock()
Exemple #3
0
            print ("key exists: {} -> {}".format( addr, dst ))
            continue
        except KeyError:
            pass

        user, domain = addr.split('@')

        # prompt for VIP status

        fmap        = {True: VIPS_FILE, False: ADDRESS_FILE}
        vd          = {True:'VIP', False:'Non-VIP'}
        is_vip      = raw_input("{} is VIP [y/N]? ".format(addr)).strip().lower() in ['y']

        if is_vip:
            folder_name = "@vip"
            VIPs.update({addr:folder_name})
            if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])):
                with open(fmap[is_vip], 'w') as f:
                    json.dump(VIPs, f)
        else:
            folder_name = raw_input("{} -> {} [Enter/folder name/X] ".format(addr, user)).strip().lower()
            if folder_name == "":
                folder_name = user
            elif folder_name == "x":
                break

            if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])):
                non_VIPs.update({addr:folder_name})
                with open(fmap[is_vip], 'w') as f:
                    json.dump(non_VIPs, f)
Exemple #4
0
            continue
        except KeyError:
            pass

        user, domain = addr.split('@')

        # prompt for VIP status

        fmap = {True: VIPS_FILE, False: ADDRESS_FILE}
        vd = {True: 'VIP', False: 'Non-VIP'}
        is_vip = raw_input(
            "{} is VIP [y/N]? ".format(addr)).strip().lower() in ['y']

        if is_vip:
            folder_name = "@vip"
            VIPs.update({addr: folder_name})
            if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])):
                with open(fmap[is_vip], 'w') as f:
                    json.dump(VIPs, f)
        else:
            folder_name = raw_input("{} -> {} [Enter/folder name/X] ".format(
                addr, user)).strip().lower()
            if folder_name == "":
                folder_name = user
            elif folder_name == "x":
                break

            if confirm("{} -> {} ({})".format(addr, folder_name, vd[is_vip])):
                non_VIPs.update({addr: folder_name})
                with open(fmap[is_vip], 'w') as f:
                    json.dump(non_VIPs, f)