
рдЬрдм рдХрд┐рд╕реА рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдореЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ - рдПрдХреНрд╕рдЪреЗрдВрдЬ рдФрд░ рдЖрдЙрдЯрд▓реБрдХ рд╕реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдорди рд╣реЛрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпреЗ рд╕рдорд╛рдзрд╛рди рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛рдкрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрдИ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред
рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдореЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕реБрдВрджрд░ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрднрд╡ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдПрдордПрдкреАрдЖрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ? рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдлреЗрд░рдмрджрд▓ рдФрд░ рдкреНрд░рдХрд╛рд╢ рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ -
IMAP ред IMAP, рднрдЧрд╡рд╛рди рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдзреБрдирд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдПрдХ рдбрд┐рдЧреНрд░реА рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ рд╕рднреА рдИрдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдпрд╛ рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╛рдореВрд▓реА рд╕реЗрдЯ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рддреЛ, рд╣рдо рдЪрд╛рд╣реЗрдВрдЧреЗ:
- рдПрдХ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП - рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдоред рдорд╛рдирдХреАрдХреГрдд рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореВрд░реНрдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реБрд░реВ рдореЗрдВ рдПрдХ рдУрдПрд╕ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛, рдлрд┐рд░ рддреБрд░рдВрдд рдПрдХреНрд╕рдЪреЗрдВрдЬ рдЦрд░реАрджрдирд╛ рдФрд░ рддреИрдирд╛рдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдХрд┐рд╕реА рднреА рд▓рдЪреАрд▓реЗрдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред
- IMAP рдФрд░ IMAP ACL рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рдорд░реНрдердиред рджреВрд╕рд░рд╛ рдмрд┐рдВрджреБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдмрд┐рдирд╛, рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдпрд╛ рдореЗрд▓рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдореЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВред
- рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХреЗрдВрджреНрд░реАрдп рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
- рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд▓рдЪреАрд▓рд╛рдкрди рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреАред
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЫреЛрдЯреА рдЦреЛрдЬ рдмрддрд╛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдХрд▓реНрдк рдЬрд┐рд╕реЗ рдХрд░реАрдм рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ рд╡рд╣ рд╣реИ
рдореЛрдЬрд╝рд┐рд▓рд╛ рдердВрдбрд░рдмрд░реНрдб ред рд▓реЗрдХрд┐рди рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: рдХреНрдпрд╛ рдердВрдбрд░рдмрд░реНрдб рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдФрд░ рдЖрдЙрдЯрд▓реБрдХ рдХреЗ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХреЗрдВ? рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рди рдХреЗрд╡рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЖрдк Microsoft рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рд╕рд┐рд░реНрдл рдПрдХ рдирдХрд▓реА рдирдХрд▓ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рдкреНрд░рд╕рд┐рджреНрдз рдореИрдВ рдореЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкреВрд░реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдмрджрд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рдерд╛ред рдореИрдВ
Dovecot рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореЗрд░реЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд▓рдЪреАрд▓реЗ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд
рдпрд╣ рд╣реИ рдХрд┐ Dovecot рдПрдХрдорд╛рддреНрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░ рд╣реИ рдЬреЛ
IMAP рд╕рдорд░реНрдерди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ
рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ред рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдзрд┐рдХрддрдо рджрдХреНрд╖рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдХрдо рд╕реЗ рдХрдо IMAP ACL рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╡рд┐рдХрд▓реЛрдВ рдореЗрдВ
рдЕрдм рд╕реАрдзреЗ рдердВрдбрд░рдмрд░реНрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдердВрдбрд░рдмрд░реНрдб рдкрд╛рда рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдмрд╣реБрдд рд╕реЗ рдкреНрдпрд╛рд░реЗ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рд╣рдж рддрдХ рдЕрд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗред рдердВрдбрд░рдмрд░реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИрдВред рдФрд░ рдердВрдбрд░рдмрд░реНрдб рд╕рд┐рд░реНрдл рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдкрдврд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╣реБрдд рд╣реА рдордЬреЗрджрд╛рд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдЖрдк рдЬреЗрдПрд╕ рдХреА рдХрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдердВрдбрд░рдмрд░реНрдб рдореЗрдВ рдЬреЗрдПрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреВрд░реНрдг рд╕реЗ рджреВрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред
рдореБрдЦреНрдп рдердВрдбрд░рдмрд░реНрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ
рдкреНрд░реАрдлрд╝реЗрд╕реЗрдЬ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ: рдердВрдбрд░рдмрд░реНрдб рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдпрд╛ рддреЛ рд╣реЛрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ (рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП), рдпрд╛ рдРрдкрдбрд╛рдЯрд╛ рдореЗрдВ (рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП), рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ (рдердВрдбрд░рдмрд░реНрдб рдкреЛрд░реНрдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП) рд╕реНрдерд┐рдд рд╣реИред
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рднреА рдлреЙрд░реНрдо рдХреА рд▓рд╛рдЗрдиреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
user_pref("app.update.auto", false);
, .
prefs.js , Thunderbird. ,
prefs.js.
->...,
,
..., . - , .Mozilla AutoConfig (aka Mission Control)
. ,
prefs.js , , Thunderbird ,
prefs.js.
JavaScript , , JavaScript .
Thunderbird.
greprefs/all.js,
/usr/lib/thunderbird-xxx/ Ubuntu Linux Thunderbird.exe Windows. :
pref("general.config.obscure_value", 0);
pref("general.config.filename", "thunderbird.cfg");
, Thunderbird, . , 0.
thunderbird.cfg. , Thunderbird. , Thunderbird Linux
which thunderbird
Windows , , .
thunderbird.cfg? JavaScript , Thunderbird. - , :
function pref(prefName, value)
function defaultPref(prefName, value)
function lockPref(prefName, value)
function unlockPref(prefName)
function getPref(prefName)
function clearPref(prefName)
function getenv(envName)
, . , ,
.
, ?
- pref тАФ . Thunderbird, thunderbird.cfg, .
- defaultPref тАФ . .
- lockPref тАФ , , . , .
- unlockPref тАФ , .
- getPref тАФ .
- clearPref тАФ .
- getenv тАФ .
LDAP, , . , .
thunderbird.cfg, ┬л┬╗ Thunderbird:
// Thunderbird Mozilla AutoConfig
try {
// , Thunderbird ( , )
if(getenv("USER") != "") {
// *NIX
var env_user = getenv("USER");
var env_home = getenv("HOME");
} else {
// Windows
var env_user = getenv("USERNAME");
var env_home = getenv("HOMEPATH");
}
// account1
defaultPref("mail.accountmanager.defaultaccount", "account1");
// account1
defaultPref("mail.accountmanager.accounts", "account1");
// account1 server1 (IMAP)
lockPref("mail.account.account1.server", "server1");
// IMAP ,
//
lockPref("mail.accountmanager.localfoldersserver", "server1");
// " "
lockPref("mail.rights.version", 1);
// . ,
// all.js Mozilla AutoConfig .
lockPref("app.update.enabled", false);
lockPref("extensions.update.enabled", false);
// IMAP
lockPref("mail.server.server1.type", "imap");
lockPref("mail.server.server1.hostname", "mail.domain.com"); // , , ,
lockPref("mail.server.server1.realhostname", "mail.domain.com"); //
lockPref("mail.server.server1.port", 143); //
lockPref("mail.server.server1.socketType", 2); // STARTLS
lockPref("mail.server.server1.name", env_user);
lockPref("mail.server.server1.userName", env_user); // ,
lockPref("mail.server.server1.realuserName", env_user); // hostname
lockPref("mail.server.server1.login_at_startup", true); // ! ;)
lockPref("mail.server.server1.isSecure", true); //
// SMTP
lockPref("mail.smtpserver.smtp1.hostname", "mail.domain.com");
lockPref("mail.smtpserver.smtp1.port", 25);
lockPref("mail.smtpserver.smtp1.description", "SMTP ┬л ┬╗");
lockPref("mail.smtpserver.smtp1.try_ssl", 2);
lockPref("mail.smtpserver.smtp1.auth_method", 1);
lockPref("mail.smtpserver.smtp1.username", env_user);
// - ..
defaultPref("mail.identity.id1.fullName", env_user); // ,
lockPref("mail.identity.id1.useremail", env_user + "@domain.com");
lockPref("mail.identity.id1.reply_to", env_user + "@domain.com");
lockPref("mail.identity.id1.valid", true);
lockPref("mail.identity.id1.smtpServer", "smtp1");
lockPref("mail.identity.id1.organization", " ┬л ┬╗");
// ID
lockPref("mail.account.account1.identities", "id1");
// LDAP
lockPref("ldap_2.servers.domain.uri", "ldap://dc.domain.com/OU=,OU=domain,DC=DOMAIN,DC=COM??sub?(mail=*)");
lockPref("ldap_2.servers.domain.auth.dn", "DOMAIN\\" + env_user);
lockPref("ldap_2.servers.domain.auth.saslmech", "");
lockPref("ldap_2.servers.domain.description", " ' '");
lockPref("ldap_2.servers.domain.filename", "empl.mab");
lockPref("ldap_2.servers.domain.maxHits", 300);
//
lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.domain");
lockPref("ldap_2.autoComplete.useDirectory", true);
} catch(e) {
displayError("lockedPref", e);
}
, , .
try , ( Thunderbird ). , , . , , ,
mail.server.server.socketType .
: - Thunderbird , Thunderbird .
Thunderbird (
all.js!), , Thunderbird , , LDAP .
Thunderbird. ,
lockPref(), ┬л┬╗. тАФ - .
, ,
localfoldersserver IMAP . IMAP , , , , .
, JavaScript , . ,
thunderbird.cfg . , .
Thunderbird URL. тАФ ,
general.config.filename all.js (
thunderbird.cfg) :
lockPref("autoadmin.global_config_url", "http://mail.domain.com/thunderbird.cfg");
lockPref("autoadmin.append_emailaddr", false);
, . тАФ , .
: Thunderbird. , JavaScript, , . тАФ , SQL LDAP . .
, . HTTP , PHP Perl , , .
тАФ , Thunderbird, , - . Thunderbird
getent, URL GET-. : Thunderbird - URL GET-
autoadmin.global_config_url. ,
mod_rewrite URL URL c GET- URL .
, .
thunderbird.cfg, Thunderbird, :
// Thunderbird
if(getenv("USER") != "") {
// *NIX settings
var env_user = getenv("USER");
var env_home = getenv("HOME");
} else {
// Windows settings
var env_user = getenv("USERNAME");
var env_home = getenv("HOMEPATH");
}
lockPref("autoadmin.global_config_url", "http://mail.domain.com/tb/user/"+env_user);
lockPref("autoadmin.append_emailaddr", false);
malamut Thunderbird
http://mail.domain.com/tb/user/malamut
mail.domain.com
Apache mod_rewrite mod_perl, .
tb/ mail.domain.com Perl-
conf.pl, Thunderbird,
.htaccess :
Options -Indexes +ExecCGI
AddHandler cgi-script .pl
RewriteEngine on
RewriteBase /tb
RewriteRule ^user/(.*) conf.pl?user=$1 [L]
URL
http://mail.domain.com/tb/user/malamut
URL
http://mail.domain.com/tb/conf.pl?user=malamut
Perl , GET- Thunderbird.
:
#!/usr/bin/perl
use 5.010;
use CGI qw/:standard/;
#
$smtp_server = "mail.domain.com";
$imap_server = "mail.domain.com";
$organization = " ┬л ┬╗";
#
print header(
-type=>'application/javascript'
);
# Username - GET
$user = param('user');
unless ($user) { die "We need a user, please!\n" }
# user lovercase, IMAP . username
# , .
$user = lc $user;
#########################################################################
#
# .
# FIXME:
@mails = getEmails($user);
#
# FIXME:
$name = getName($user);
#########################################################################
#
print <<HEAD;
// Thunderbird $user ($name)
try {
HEAD
#
# SMTP SMTP
# JavaScript.
# , .
# mail.accountmanager.accounts mail.smtpservers, .
print <<SERVERS;
//
// ,
var accounts = getPref("mail.accountmanager.accounts");
var accounts_s = accounts + ",";
if (! (accounts_s.indexOf("account1,")+1) ) {
accounts = accounts + ",account1";
}
pref("mail.accountmanager.accounts",accounts);
// IMAP
lockPref("mail.server.server1.type", "imap");
lockPref("mail.server.server1.hostname", "$imap_server"); // , , ,
lockPref("mail.server.server1.realhostname", "$imap_server"); //
lockPref("mail.server.server1.port", 143); //
lockPref("mail.server.server1.socketType", 2); // STARTLS
lockPref("mail.server.server1.name", "$name");
lockPref("mail.server.server1.userName", "$user"); // ,
lockPref("mail.server.server1.realuserName", "$user"); // hostname
lockPref("mail.server.server1.login_at_startup", true); // ! ;)
lockPref("mail.server.server1.isSecure", true); //
// IMAP
lockPref("mail.account.account1.server", "server1");
// SMTP
lockPref("mail.smtpserver.smtp1.hostname", "$smtp_server");
lockPref("mail.smtpserver.smtp1.port", 25);
lockPref("mail.smtpserver.smtp1.description", "SMTP $organization");
lockPref("mail.smtpserver.smtp1.try_ssl", 2);
lockPref("mail.smtpserver.smtp1.auth_method", 1);
lockPref("mail.smtpserver.smtp1.username", "$user");
// SMTP
var smtp = getPref("mail.smtpservers");
var smtp_s = smtp + ",";
if (! (smtp_s.indexOf("smtp1,")+1) ) {
smtp = smtp + ",smtp1";
}
pref("mail.smtpservers", smtp);
SERVERS
#
print <<MISC;
// " "
lockPref("mail.rights.version", 1);
//
lockPref("app.update.enabled", false);
lockPref("extensions.update.enabled", false);
// IMAP ,
//
lockPref("mail.accountmanager.localfoldersserver", "server1");
// TB
lockPref("mail.accountmanager.defaultaccount", "account1");
// IMAP ,
//
lockPref("mail.accountmanager.localfoldersserver", "server1");
MISC
#
# , .
$i=0;
@ids = ();
foreach $mail (@mails) {
$i++;
$id = <<ID;
// $mail $user ($name)
defaultPref("mail.identity.id$i.fullName", "$name");
lockPref("mail.identity.id$i.useremail", "$mail");
lockPref("mail.identity.id$i.reply_to", "$mail");
lockPref("mail.identity.id$i.valid", true);
lockPref("mail.identity.id$i.smtpServer", "smtp1");
lockPref("mail.identity.id$i.organization", "$organization");
lockPref("mail.identity.id$i.archive_folder", "imap://$user\@$imap_server/Archives");
lockPref("mail.identity.id$i.draft_folder", "imap://$user\@$imap_server/Drafts");
lockPref("mail.identity.id$i.drafts_folder_picker_mode", 0);
lockPref("mail.identity.id$i.fcc_folder", "imap://$user\@$imap_server/Sent");
lockPref("mail.identity.id$i.fcc_folder_picker_mode", 0);
lockPref("mail.identity.id$i.stationery_folder", "imap://$user\@$imap_server/Templates");
ID
print $id;
push @ids, "id$i";
}
# TB,
$ids = join ',', @ids;
print <<IDS;
//
lockPref("mail.account.account1.identities", "$ids");
IDS
# LDAP
print <<BOOKS;
//
lockPref("ldap_2.servers.domain.uri", "ldap://dc.domain.com/OU=,OU=domain,DC=DOMAIN,DC=COM??sub?(mail=*)");
lockPref("ldap_2.servers.domain.auth.dn", "DOMAIN\\\\$user");
lockPref("ldap_2.servers.domain.auth.saslmech", "");
lockPref("ldap_2.servers.domain.description", " ' '");
lockPref("ldap_2.servers.domain.filename", "empl.mab");
lockPref("ldap_2.servers.domain.maxHits", 300);
//
lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.domain");
lockPref("ldap_2.autoComplete.useDirectory", true);
BOOKS
#################################################
# #
if ($user eq 'malamut') {
yandex('yandex',50);
}
#################################################
print <<TAIL;
} catch(e) {
displayError("lockedPref", e);
}
TAIL
# . id , ya_name -
sub yandex {
my ($ya_name, $id) = @_;
print <<YANDEX;
// SMTP $ya_name\@yandex.ru
lockPref("mail.smtpserver.smtp$id.hostname", "smtp.yandex.ru");
lockPref("mail.smtpserver.smtp$id.port", 465);
lockPref("mail.smtpserver.smtp$id.description", "SMTP $ya_name\@yandex.ru");
lockPref("mail.smtpserver.smtp$id.try_ssl", 3);
lockPref("mail.smtpserver.smtp$id.auth_method", 1);
lockPref("mail.smtpserver.smtp$id.username", "$ya_name\@yandex.ru");
// SMTP
var smtp = getPref("mail.smtpservers");
var smtp_s = smtp + ",";
if (! (smtp_s.indexOf("smtp$id,")+1) ) {
smtp = smtp + ",smtp$id";
}
pref("mail.smtpservers", smtp);
// IMAP $ya_name\@yandex.ru
lockPref("mail.server.server$id.type", "imap");
lockPref("mail.server.server$id.hostname", "imap.yandex.ru");
lockPref("mail.server.server$id.realhostname", "imap.yandex.ru");
lockPref("mail.server.server$id.port", 993);
lockPref("mail.server.server$id.socketType", 3);
lockPref("mail.server.server$id.name", "$ya_name\@yandex.ru");
lockPref("mail.server.server$id.userName", "$ya_name\@yandex.ru");
lockPref("mail.server.server$id.realuserName", "$ya_name\@yandex.ru");
lockPref("mail.server.server$id.check_new_mail", true);
lockPref("mail.server.server$id.login_at_startup", true);
lockPref("mail.server.server$id.isSecure", true);
lockPref("mail.server.server$id.max_cached_connections", 5);
// $ya_name\@yandex.ru
defaultPref("mail.identity.id$id.fullName", "$ya_name");
lockPref("mail.identity.id$id.useremail", "$ya_name\@yandex.ru");
lockPref("mail.identity.id$id.reply_to", "$ya_name\@yandex.ru");
lockPref("mail.identity.id$id.valid", true);
lockPref("mail.identity.id$id.smtpServer", "smtp$id");
defaultPref("mail.identity.id$id.organization", "");
lockPref("mail.account.account$id.identities", "id$id");
lockPref("mail.account.account$id.server", "server$id");
// $ya_name\@yandex.ru
accounts = getPref("mail.accountmanager.accounts");
accounts_s = accounts + ",";
if (! (accounts_s.indexOf("account$id,")+1) ) {
accounts = accounts + ",account$id";
}
pref("mail.accountmanager.accounts",accounts);
YANDEX
}
.
http://mail.domain.com/tb/user/malamut
, :
// Thunderbird malamut (Malamut)
try {
//
// ,
var accounts = getPref("mail.accountmanager.accounts");
var accounts_s = accounts + ",";
if (! (accounts_s.indexOf("account1,")+1) ) {
accounts = accounts + ",account1";
}
pref("mail.accountmanager.accounts",accounts);
// IMAP
lockPref("mail.server.server1.type", "imap");
lockPref("mail.server.server1.hostname", "mail.domain.com"); // , , ,
lockPref("mail.server.server1.realhostname", "mail.domain.com"); //
lockPref("mail.server.server1.port", 143); //
lockPref("mail.server.server1.socketType", 2); // STARTLS
lockPref("mail.server.server1.name", "Malamut");
lockPref("mail.server.server1.userName", "malamut"); // ,
lockPref("mail.server.server1.realuserName", "malamut"); // hostname
lockPref("mail.server.server1.login_at_startup", true); // ! ;)
lockPref("mail.server.server1.isSecure", true); //
// IMAP
lockPref("mail.account.account1.server", "server1");
// SMTP
lockPref("mail.smtpserver.smtp1.hostname", "mail.domain.com");
lockPref("mail.smtpserver.smtp1.port", 25);
lockPref("mail.smtpserver.smtp1.description", "SMTP ┬л ┬╗");
lockPref("mail.smtpserver.smtp1.try_ssl", 2);
lockPref("mail.smtpserver.smtp1.auth_method", 1);
lockPref("mail.smtpserver.smtp1.username", "malamut");
// SMTP
var smtp = getPref("mail.smtpservers");
var smtp_s = smtp + ",";
if (! (smtp_s.indexOf("smtp1,")+1) ) {
smtp = smtp + ",smtp1";
}
pref("mail.smtpservers", smtp);
// " "
lockPref("mail.rights.version", 1);
//
lockPref("app.update.enabled", false);
lockPref("extensions.update.enabled", false);
// IMAP ,
//
lockPref("mail.accountmanager.localfoldersserver", "server1");
// TB
lockPref("mail.accountmanager.defaultaccount", "account1");
// IMAP ,
//
lockPref("mail.accountmanager.localfoldersserver", "server1");
// malamut@domain.com malamut (Malamut)
defaultPref("mail.identity.id1.fullName", "Malamut");
lockPref("mail.identity.id1.useremail", "malamut@domain.com");
lockPref("mail.identity.id1.reply_to", "malamut@domain.com");
lockPref("mail.identity.id1.valid", true);
lockPref("mail.identity.id1.smtpServer", "smtp1");
lockPref("mail.identity.id1.organization", " ┬л ┬╗");
lockPref("mail.identity.id1.archive_folder", "imap://malamut@mail.domain.com/Archives");
lockPref("mail.identity.id1.draft_folder", "imap://malamut@mail.domain.com/Drafts");
lockPref("mail.identity.id1.drafts_folder_picker_mode", 0);
lockPref("mail.identity.id1.fcc_folder", "imap://malamut@mail.domain.com/Sent");
lockPref("mail.identity.id1.fcc_folder_picker_mode", 0);
lockPref("mail.identity.id1.stationery_folder", "imap://malamut@mail.domain.com/Templates");
// admin@domain.com malamut (Malamut)
defaultPref("mail.identity.id2.fullName", "Malamut");
lockPref("mail.identity.id2.useremail", "admin@domain.com");
lockPref("mail.identity.id2.reply_to", "admin@domain.com");
lockPref("mail.identity.id2.valid", true);
lockPref("mail.identity.id2.smtpServer", "smtp1");
lockPref("mail.identity.id2.organization", " ┬л ┬╗");
lockPref("mail.identity.id2.archive_folder", "imap://malamut@mail.domain.com/Archives");
lockPref("mail.identity.id2.draft_folder", "imap://malamut@mail.domain.com/Drafts");
lockPref("mail.identity.id2.drafts_folder_picker_mode", 0);
lockPref("mail.identity.id2.fcc_folder", "imap://malamut@mail.domain.com/Sent");
lockPref("mail.identity.id2.fcc_folder_picker_mode", 0);
lockPref("mail.identity.id2.stationery_folder", "imap://malamut@mail.domain.com/Templates");
//
lockPref("mail.account.account1.identities", "id1,id2");
//
lockPref("ldap_2.servers.domain.uri", "ldap://dc.domain.com/OU=,OU=domain,DC=DOMAIN,DC=COM??sub?(mail=*)");
lockPref("ldap_2.servers.domain.auth.dn", "DOMAIN\\malamut");
lockPref("ldap_2.servers.domain.auth.saslmech", "");
lockPref("ldap_2.servers.domain.description", " ' '");
lockPref("ldap_2.servers.domain.filename", "empl.mab");
lockPref("ldap_2.servers.domain.maxHits", 300);
//
lockPref("ldap_2.autoComplete.directoryServer", "ldap_2.servers.domain");
lockPref("ldap_2.autoComplete.useDirectory", true);
// SMTP yandex@yandex.ru
lockPref("mail.smtpserver.smtp50.hostname", "smtp.yandex.ru");
lockPref("mail.smtpserver.smtp50.port", 465);
lockPref("mail.smtpserver.smtp50.description", "SMTP yandex@yandex.ru");
lockPref("mail.smtpserver.smtp50.try_ssl", 3);
lockPref("mail.smtpserver.smtp50.auth_method", 1);
lockPref("mail.smtpserver.smtp50.username", "yandex@yandex.ru");
// SMTP
var smtp = getPref("mail.smtpservers");
var smtp_s = smtp + ",";
if (! (smtp_s.indexOf("smtp50,")+1) ) {
smtp = smtp + ",smtp50";
}
pref("mail.smtpservers", smtp);
// IMAP yandex@yandex.ru
lockPref("mail.server.server50.type", "imap");
lockPref("mail.server.server50.hostname", "imap.yandex.ru");
lockPref("mail.server.server50.realhostname", "imap.yandex.ru");
lockPref("mail.server.server50.port", 993);
lockPref("mail.server.server50.socketType", 3);
lockPref("mail.server.server50.name", "yandex@yandex.ru");
lockPref("mail.server.server50.userName", "yandex@yandex.ru");
lockPref("mail.server.server50.realuserName", "yandex@yandex.ru");
lockPref("mail.server.server50.check_new_mail", true);
lockPref("mail.server.server50.login_at_startup", true);
lockPref("mail.server.server50.isSecure", true);
lockPref("mail.server.server50.max_cached_connections", 5);
// yandex@yandex.ru
defaultPref("mail.identity.id50.fullName", "yandex");
lockPref("mail.identity.id50.useremail", "yandex@yandex.ru");
lockPref("mail.identity.id50.reply_to", "yandex@yandex.ru");
lockPref("mail.identity.id50.valid", true);
lockPref("mail.identity.id50.smtpServer", "smtp50");
defaultPref("mail.identity.id50.organization", "");
lockPref("mail.account.account50.identities", "id50");
lockPref("mail.account.account50.server", "server50");
// yandex@yandex.ru
accounts = getPref("mail.accountmanager.accounts");
accounts_s = accounts + ",";
if (! (accounts_s.indexOf("account50,")+1) ) {
accounts = accounts + ",account50";
}
pref("mail.accountmanager.accounts",accounts);
} catch(e) {
displayError("lockedPref", e);
}
, Thunderbird, Perl .
, Thunderbird, , . , тАФ , .
, , Thunderbird, .
Thunderbird . , , SMTP , Thunderbird . - , , , . - , . тАФ , 1.
, - , , , Thunderbird , . :
lockPref("mail.account.account1.identities", "id1,id2");
Thunderbird (
account), , (
identity). , ,
mail.account.accountN, N тАФ . , ,
mail.identity.idN, N тАФ .
Thunderbird
mail.accountmanager.accounts. , Thunderbird. , Thunderbird, , .
N
mail.account.accountN.identities. IMAP
mail.account.accountN.server, SMTP
mail.identity.idN.smtpServer.
, , - , , .
-, JavaScript , . , :
// ,
var accounts = getPref("mail.accountmanager.accounts");
var accounts_s = accounts + ",";
if (! (accounts_s.indexOf("account1,")+1) ) {
accounts = accounts + ",account1";
}
pref("mail.accountmanager.accounts",accounts);
, , . , .
, Perl . , Yandex , . Thunderbird , , Yandex ! .
, - yandex . , , , , , , . , , .
, . Thunderbird , , - , . , , .
Thunderbird
Thunderbird . , Thunderbird , . .
, IMAP ACL
. Thunderbird
Lightning, , , .
, , ,
extensions/, Thunderbird.
, .
default/profile. , , .
!