Added option to do data and attachment directory hashing, up to four levels. Will...
[squirrelmail.git] / AUTHORS
CommitLineData
1d38b94b 1COPYING\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000035433\007026253476\0010635\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 GNU GENERAL PUBLIC LICENSE
2 Version 2, June 1991
3
4 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
5 675 Mass Ave, Cambridge, MA 02139, USA
6 Everyone is permitted to copy and distribute verbatim copies
7 of this license document, but changing it is not allowed.
8
9 Preamble
10
11 The licenses for most software are designed to take away your
12freedom to share and change it. By contrast, the GNU General Public
13License is intended to guarantee your freedom to share and change free
14software--to make sure the software is free for all its users. This
15General Public License applies to most of the Free Software
16Foundation's software and to any other program whose authors commit to
17using it. (Some other Free Software Foundation software is covered by
18the GNU Library General Public License instead.) You can apply it to
19your programs, too.
20
21 When we speak of free software, we are referring to freedom, not
22price. Our General Public Licenses are designed to make sure that you
23have the freedom to distribute copies of free software (and charge for
24this service if you wish), that you receive source code or can get it
25if you want it, that you can change the software or use pieces of it
26in new free programs; and that you know you can do these things.
27
28 To protect your rights, we need to make restrictions that forbid
29anyone to deny you these rights or to ask you to surrender the rights.
30These restrictions translate to certain responsibilities for you if you
31distribute copies of the software, or if you modify it.
32
33 For example, if you distribute copies of such a program, whether
34gratis or for a fee, you must give the recipients all the rights that
35you have. You must make sure that they, too, receive or can get the
36source code. And you must show them these terms so they know their
37rights.
38
39 We protect your rights with two steps: (1) copyright the software, and
40(2) offer you this license which gives you legal permission to copy,
41distribute and/or modify the software.
42
43 Also, for each author's protection and ours, we want to make certain
44that everyone understands that there is no warranty for this free
45software. If the software is modified by someone else and passed on, we
46want its recipients to know that what they have is not the original, so
47that any problems introduced by others will not reflect on the original
48authors' reputations.
49
50 Finally, any free program is threatened constantly by software
51patents. We wish to avoid the danger that redistributors of a free
52program will individually obtain patent licenses, in effect making the
53program proprietary. To prevent this, we have made it clear that any
54patent must be licensed for everyone's free use or not licensed at all.
55
56 The precise terms and conditions for copying, distribution and
57modification follow.
58\f
59 GNU GENERAL PUBLIC LICENSE
60 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
61
62 0. This License applies to any program or other work which contains
63a notice placed by the copyright holder saying it may be distributed
64under the terms of this General Public License. The "Program", below,
65refers to any such program or work, and a "work based on the Program"
66means either the Program or any derivative work under copyright law:
67that is to say, a work containing the Program or a portion of it,
68either verbatim or with modifications and/or translated into another
69language. (Hereinafter, translation is included without limitation in
70the term "modification".) Each licensee is addressed as "you".
71
72Activities other than copying, distribution and modification are not
73covered by this License; they are outside its scope. The act of
74running the Program is not restricted, and the output from the Program
75is covered only if its contents constitute a work based on the
76Program (independent of having been made by running the Program).
77Whether that is true depends on what the Program does.
78
79 1. You may copy and distribute verbatim copies of the Program's
80source code as you receive it, in any medium, provided that you
81conspicuously and appropriately publish on each copy an appropriate
82copyright notice and disclaimer of warranty; keep intact all the
83notices that refer to this License and to the absence of any warranty;
84and give any other recipients of the Program a copy of this License
85along with the Program.
86
87You may charge a fee for the physical act of transferring a copy, and
88you may at your option offer warranty protection in exchange for a fee.
89
90 2. You may modify your copy or copies of the Program or any portion
91of it, thus forming a work based on the Program, and copy and
92distribute such modifications or work under the terms of Section 1
93above, provided that you also meet all of these conditions:
94
95 a) You must cause the modified files to carry prominent notices
96 stating that you changed the files and the date of any change.
97
98 b) You must cause any work that you distribute or publish, that in
99 whole or in part contains or is derived from the Program or any
100 part thereof, to be licensed as a whole at no charge to all third
101 parties under the terms of this License.
102
103 c) If the modified program normally reads commands interactively
104 when run, you must cause it, when started running for such
105 interactive use in the most ordinary way, to print or display an
106 announcement including an appropriate copyright notice and a
107 notice that there is no warranty (or else, saying that you provide
108 a warranty) and that users may redistribute the program under
109 these conditions, and telling the user how to view a copy of this
110 License. (Exception: if the Program itself is interactive but
111 does not normally print such an announcement, your work based on
112 the Program is not required to print an announcement.)
113\f
114These requirements apply to the modified work as a whole. If
115identifiable sections of that work are not derived from the Program,
116and can be reasonably considered independent and separate works in
117themselves, then this License, and its terms, do not apply to those
118sections when you distribute them as separate works. But when you
119distribute the same sections as part of a whole which is a work based
120on the Program, the distribution of the whole must be on the terms of
121this License, whose permissions for other licensees extend to the
122entire whole, and thus to each and every part regardless of who wrote it.
123
124Thus, it is not the intent of this section to claim rights or contest
125your rights to work written entirely by you; rather, the intent is to
126exercise the right to control the distribution of derivative or
127collective works based on the Program.
128
129In addition, mere aggregation of another work not based on the Program
130with the Program (or with a work based on the Program) on a volume of
131a storage or distribution medium does not bring the other work under
132the scope of this License.
133
134 3. You may copy and distribute the Program (or a work based on it,
135under Section 2) in object code or executable form under the terms of
136Sections 1 and 2 above provided that you also do one of the following:
137
138 a) Accompany it with the complete corresponding machine-readable
139 source code, which must be distributed under the terms of Sections
140 1 and 2 above on a medium customarily used for software interchange; or,
141
142 b) Accompany it with a written offer, valid for at least three
143 years, to give any third party, for a charge no more than your
144 cost of physically performing source distribution, a complete
145 machine-readable copy of the corresponding source code, to be
146 distributed under the terms of Sections 1 and 2 above on a medium
147 customarily used for software interchange; or,
148
149 c) Accompany it with the information you received as to the offer
150 to distribute corresponding source code. (This alternative is
151 allowed only for noncommercial distribution and only if you
152 received the program in object code or executable form with such
153 an offer, in accord with Subsection b above.)
154
155The source code for a work means the preferred form of the work for
156making modifications to it. For an executable work, complete source
157code means all the source code for all modules it contains, plus any
158associated interface definition files, plus the scripts used to
159control compilation and installation of the executable. However, as a
160special exception, the source code distributed need not include
161anything that is normally distributed (in either source or binary
162form) with the major components (compiler, kernel, and so on) of the
163operating system on which the executable runs, unless that component
164itself accompanies the executable.
165
166If distribution of executable or object code is made by offering
167access to copy from a designated place, then offering equivalent
168access to copy the source code from the same place counts as
169distribution of the source code, even though third parties are not
170compelled to copy the source along with the object code.
171\f
172 4. You may not copy, modify, sublicense, or distribute the Program
173except as expressly provided under this License. Any attempt
174otherwise to copy, modify, sublicense or distribute the Program is
175void, and will automatically terminate your rights under this License.
176However, parties who have received copies, or rights, from you under
177this License will not have their licenses terminated so long as such
178parties remain in full compliance.
179
180 5. You are not required to accept this License, since you have not
181signed it. However, nothing else grants you permission to modify or
182distribute the Program or its derivative works. These actions are
183prohibited by law if you do not accept this License. Therefore, by
184modifying or distributing the Program (or any work based on the
185Program), you indicate your acceptance of this License to do so, and
186all its terms and conditions for copying, distributing or modifying
187the Program or works based on it.
188
189 6. Each time you redistribute the Program (or any work based on the
190Program), the recipient automatically receives a license from the
191original licensor to copy, distribute or modify the Program subject to
192these terms and conditions. You may not impose any further
193restrictions on the recipients' exercise of the rights granted herein.
194You are not responsible for enforcing compliance by third parties to
195this License.
196
197 7. If, as a consequence of a court judgment or allegation of patent
198infringement or for any other reason (not limited to patent issues),
199conditions are imposed on you (whether by court order, agreement or
200otherwise) that contradict the conditions of this License, they do not
201excuse you from the conditions of this License. If you cannot
202distribute so as to satisfy simultaneously your obligations under this
203License and any other pertinent obligations, then as a consequence you
204may not distribute the Program at all. For example, if a patent
205license would not permit royalty-free redistribution of the Program by
206all those who receive copies directly or indirectly through you, then
207the only way you could satisfy both it and this License would be to
208refrain entirely from distribution of the Program.
209
210If any portion of this section is held invalid or unenforceable under
211any particular circumstance, the balance of the section is intended to
212apply and the section as a whole is intended to apply in other
213circumstances.
214
215It is not the purpose of this section to induce you to infringe any
216patents or other property right claims or to contest validity of any
217such claims; this section has the sole purpose of protecting the
218integrity of the free software distribution system, which is
219implemented by public license practices. Many people have made
220generous contributions to the wide range of software distributed
221through that system in reliance on consistent application of that
222system; it is up to the author/donor to decide if he or she is willing
223to distribute software through any other system and a licensee cannot
224impose that choice.
225
226This section is intended to make thoroughly clear what is believed to
227be a consequence of the rest of this License.
228\f
229 8. If the distribution and/or use of the Program is restricted in
230certain countries either by patents or by copyrighted interfaces, the
231original copyright holder who places the Program under this License
232may add an explicit geographical distribution limitation excluding
233those countries, so that distribution is permitted only in or among
234countries not thus excluded. In such case, this License incorporates
235the limitation as if written in the body of this License.
236
237 9. The Free Software Foundation may publish revised and/or new versions
238of the General Public License from time to time. Such new versions will
239be similar in spirit to the present version, but may differ in detail to
240address new problems or concerns.
241
242Each version is given a distinguishing version number. If the Program
243specifies a version number of this License which applies to it and "any
244later version", you have the option of following the terms and conditions
245either of that version or of any later version published by the Free
246Software Foundation. If the Program does not specify a version number of
247this License, you may choose any version ever published by the Free Software
248Foundation.
249
250 10. If you wish to incorporate parts of the Program into other free
251programs whose distribution conditions are different, write to the author
252to ask for permission. For software which is copyrighted by the Free
253Software Foundation, write to the Free Software Foundation; we sometimes
254make exceptions for this. Our decision will be guided by the two goals
255of preserving the free status of all derivatives of our free software and
256of promoting the sharing and reuse of software generally.
257
258 NO WARRANTY
259
260 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
261FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
262OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
263PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
264OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
265MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
266TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
267PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
268REPAIR OR CORRECTION.
269
270 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
271WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
272REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
273INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
274OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
275TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
276YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
277PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
278POSSIBILITY OF SUCH DAMAGES.
279
280 END OF TERMS AND CONDITIONS
281\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00040775\00000000\00000000\000000000000\007402645100\0010213\0 5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/Root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000103\007366774400\0011067\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:ext:fallas@cvs.squirrelmail.sourceforge.net:/cvsroot/squirrelmail
282\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/Repository\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000015\007366774400\0012325\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0squirrelmail
283\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0CVS/Entries\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100644\00000000\00000000\000000000770\007402645100\0011546\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/COPYING/1.1/Thu Dec 16 21:18:54 1999//
284/INSTALL/1.23/Mon Apr 23 13:39:58 2001//
285/MIRRORS/1.2/Tue May 22 06:31:40 2001//
286/README/1.11/Tue Oct 9 03:02:16 2001//
287/UPGRADE/1.5/Thu Apr 26 18:01:04 2001//
288/configure/1.1/Sat Jul 29 16:50:28 2000//
289D/config////
290D/data////
291D/doc////
292D/functions////
293D/help////
294D/images////
295D/locale////
296D/plugins////
297D/po////
298D/src////
299D/themes////
300/AUTHORS/1.65/Mon Dec 3 09:47:44 2001//
301/ChangeLog/1.161/Mon Dec 3 09:47:44 2001//
302/index.php/1.11/Mon Dec 3 09:47:44 2001//
303\0\0\0\0\0\0\0\0ChangeLog\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100644\00000000\00000000\000000043220\007402645100\0011326\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0****************************************************************
304*** Squirrelmail Development Series 1.1 and 1.1 Pre-Releases ***
305****************************************************************
306
307Version 1.2.0-rc3 -- December 2, 2001
308-------------------------------------
309 - Speed improvements and optimizations on much of the code
310 - Comments added, formatting cleaned up for much of the code
311 - Several plugins integrated into the Squirrelmail core
312 (focus change, attachment common, printer friendly, etc)
313 - Several plugins added as "Official Plugins" to the main
314 Squirrelmail distribution
315 - First half of a rewrite of the option pages code
316 - The Paginator!!!
317 - Other stuff that I don't recall (developers, please fill this in!)
318
319Version 1.1.3 -- (never really released)
320----------------------------
321 - Added major speed improvements to IMAP functions by our friends at XS4ALL
322 - Fixed MOTD
323 - Fixed multipart/alternative messages
324 - Updated Dutch translation
325 - Added Indonesian translation
326 - Added Portuguese (Portugal) translation
327 - Added language aliasing
328 - Added Turkish translation
329
330Version 1.1.2 -- May 21, 2001
331-----------------------------
332 - Many bugs squashed
333 - Several UI tweaks and improvements
334 - Added option (3 -> 14 in conf.pl) to auto create sent and trash folders.
335 - Updated Czech translation
336 - Support for multiple identities
337 - Support for Russian Apache removed. It is now deemed easier to just
338 turn off Charset Recoding in the Russian Apache config. See the file
339 doc/README.russian_apache
340
341Version 1.1.1 -- April 30, 2001
342-------------------------------
343 - Added built-in support for gettext if compiled support isn't available
344 - Made validate.php include a few more standard things
345 - Corrected a bug when sending an email properly
346
347Version 1.1.0 -- April 21, 2000
348-------------------------------
349 - Added option to have signout page redirect to another page (patch from
350 Scott Bronson) This can be configured in conf.pl (Org Prefs)
351 - Much improved SMTP error handling (patch from Jeff Evans)
352 - Preferences are now cached instead of read in every page load.
353 - Improved URL parser
354 - Added ability to read HTML messages by default instead of plain text
355 (Display Options)
356 - Added authenticated SMTP server support (configure in conf.pl)
357 - Rewrote attachment handling code in compose.php
358 - If aliases are typed in To, Cc, or Bcc, they are automatically looked up
359 in the addressbook and converted to the associated addresses.
360 - Added collapseable folder listing (an option that can be turned on in
361 Folder Options)
362 - Added alternating row colors to improve interface (Display Options)
363
364
365**************************************
366*** Squirrelmail Stable Series 1.0 ***
367**************************************
368
369Version 1.0.6 -- April 19, 2001
370-------------------------------
371 - Reworked validation for each page. It's now standardized in validate.php
372 - Fixed login bug that resulted from 1.0.5 security updates
373 - Fixed plugin incompatibilities that were introduced in 1.0.5
374 - Added more security checking to preference saving/loading
375 - Updated German translation (thanks to Ronald Bauerschmidt <rb@debian.org>)
376 - Updated Finnish help files
377
378Version 1.0.5 -- April 17, 2001
379-------------------------------
380 - MAJOR security issues addressed. Please upgrade as soon as possible.
381 - Downloading attachments should work better due to a tip by Ray Black III.
382 - Fixed bug with drop-down folder list not containing INBOX
383 - Added Swedish help files Teemu Junnila <teejun@vallcom.com>
384 - Added Italian help files Antonetti Roberto <antonr@piceniaweb.com>
385
386Version 1.0.4 -- April 9, 2001
387------------------------------
388 - Fixed some bugs with folder creation
389 - Security fix for UW IMAP server to disallow folder paths outside of
390 $folder_prefix
391 - Some problems with header encoding/decoding fixed
392 - Made subject column take up whatever width is available
393 - Added bcc to html addressbook search
394
395Version 1.0.3 -- March 9, 2001
396------------------------------
397 - Many i18n enhancements/fixes
398 - Fixed bug with default theme path being set incorrectly
399 - Fixed problem when sending/forwarding multiple attachments
400 - Made folder drop-down list consistant in look to the other drop-downs
401 - Fixed problem where some attachment filenames would not be displayed
402 - Added Finnish help files by Teemu Junnila <teejun@vallcom.com>
403 - Updated Norwegian translation
404 - Updated Brazillian Portuguise translation
405
406Version 1.0.2 -- February 8, 2001
407---------------------------------
408 - Added a workaround for RedHat's 4.0.4pl1-3 binary package (It's also
409 the same workaround for Konqueror and other PHP installations?)
410 - Select All works through the search
411 - Better escaped string handling from POST variables
412 - Many more code cleanups and optimizations
413 - Added Hungarian translation by Teemu Junnila <teejun@vallcom.com>
414 - Added Icelandic translation by Karl Heišar" <karlh@macho.is>
415 - Updated Taiwan translation
416 - Updated Sweedish translation
417 - Updated Finnish translation
418
419Version 1.0.1 -- February 1, 2001
420---------------------------------
421 - Improved the way sqimap_read_data() is handled
422 - Sped up "no sorting" even more
423 - Fixed problems with sending messages
424 - Fixed some pass-by-reference calls that caused problems with newer
425 PHP versions
426 - Fixed bug that didn't display last folder subscribed to
427 - Removed requirement of PHP 4.0.1 for array_unique() function
428 - Removed unnecessary echo statements by breaking out of PHP
429 - Changed evaluation method from using " to ' for speed improvements
430 - If no plugin array set in config.php, now handled correctly
431 - If subject is > 55 chars, trims it and puts "..." in message list
432 - Hundreds of minor changes to remove all verbose PHP warning messages
433
434Version 1.0 -- January 30, 2001
435-------------------------------
436 - Updated config_default.php to include attachment_common plugin
437 (now in distribution)
438 - A few minor speed improvements
439 - Fixed problems in sqimap_read_body(), made it more reliable
440 - Added French translation of help files by gore K <gore_k@ymca-cepiere.org>
441 - Added Finnish translation by Teemu Junnila <teejun@vallcom.com>
442 - Updated Sweedish translation
443 - Updated Russian translation
444
445
446********************************************************
447*** Squirrelmail Development Series 1.0 Pre-Releases ***
448********************************************************
449
450Version 1.0pre3 -- January 22, 2001
451-----------------------------------
452 - Fixed some "Select All" bugs
453 - Finally fixed the IE/SSL download problem!!
454 - Added Danish translation by Claus Rasmussen <claus@webclaus.com>
455 - Updated Spanish translation
456 - Updated Polish translation
457 - Updated Taiwan translation
458 - Updated Czech translation
459 - Updated Korean translation
460
461Version 1.0pre2 -- January 15, 2001
462-----------------------------------
463 - A number of security fixes
464 - Replaced error messages with better, formatted, and meaningful messages.
465 - Fixed "reply all" so that it works intelligently now
466 - Made deleted (but not expunged) messages easier to detect (only if
467 $auto_expunge = false)
468 - Fixed bug that didn't display size correctly in search results
469 - Major memory management and speed improvements with downloading of
470 attachments
471 - Made $auto_expunge variable actually do something
472 - Fixed bug that didn't display login failure message
473 - Fixed minor bug in sqimap_mailbox_list
474 - Added sqimap_capability function to check capabilities of server.
475 - Rewrote sqimap_get_delim to use NAMESPACE capability (if available) to
476 get delimiter.
477 - Added Catalan translation of Help documents by Josep Sanz <jsanz@fa.upc.es>
478 - Added Taiwan translation by "ching" <ching@kiwa.com.tw>
479
480Version 1.0pre1 -- December 14, 2000
481------------------------------------
482 - Fixed bug in sending messages with a blank line with a "."
483 - Folder displays have been changed to be more readable in drop-down lists
484 - For security, login verification happens, then we're redirected to
485 webmail.php
486 - Folder sorting now case insensative
487 - added config option to set IMAP folder delimiter rather than always
488 detecting it
489 - Made session cookie parameter use PHP's settings rather than making
490 assumptions
491 - Select/Deselect all implemented using only HTML (not Javascript)
492 - Fixed default charset that is sent with outbound messages (now user's
493 preferred charset)
494 - Sort method saving now transparent to user, and saves between sessions
495 - Now replacing all \n with \r\n before sending the message.
496 - Added sorting option for NO sorting.. 10000 times faster!
497 - Using <pre> tags for viewing message body instead of <tt> and &nbsp;
498 - Added redirection from subdirectories to login page
499 - Attachments are shown in message index (shown as a "+")
500 - Updated attachment plugin support and passing values to hooks (see
501 plugins.txt)
502 - Added file and message size in many locations
503 - Made message index order customizable (from, subject, date) can be (date,
504 from, subject)
505 - Fixed some security problems with uploading attachments
506 - When reading, attachments look better and have a better plugin interface
507 - Some functions now pass values by reference to save on memory
508 - Added Catalan translation from Josep Sanz <jsanz@fa.upc.es>
509 - Added Serbian translation from Boris Manojlovic <steki@verat.net>
510 - Added Polish translation of Help from Krystian Kanabrodzki
511 <krys@voruta.eu.org>
512
513
514*****************************************
515*** Squirrelmail 0.5 and Pre-Releases ***
516*****************************************
517
518Version 0.5 -- September 25, 2000
519---------------------------------
520 - Fixed some problems with downloading attachments in IE
521 - If no date is set in header, we take internal date of the imap server
522 - Fixed some lingering bugs in mime parsing
523 - Searching specifies CHARSET option
524 - Security fixes
525 - Fixed hyperlink rendering problems
526
527Version 0.5pre2 -- September 6, 2000
528------------------------------------
529 - Added quite a few new themes
530 - Fixed double folder problem on some servers
531 - Using encryption for passwords
532 - Added a patch from Bill Thousand to allow easier virtual domains
533 - Security updates with attachments
534 - Added more hooks for plugins, updated plugin.txt
535 - Improved HTML address book
536 - Fixed bugs in parsing email addresses in smtp.php
537 - Applied fixes for Courier IMAP server (by Andreas Dahl)
538 - Fixed some buggy IMAP handling
539 - Improved word wrapping
540 - Fixed bugs with adding and not adding backslashes
541 - Made message highlighting case insensative
542 - Added Korean translation from Jong-II Kim <aporie@netian.com>
543 - Added Italian translation from Aldo Moresco <moresco@idcm.it>
544 - Added French translation from Ali Nedjimi <lrdfrx@club-internet.fr>
545
546Version 0.5pre1 -- August 9, 2000
547---------------------------------
548 - Searching folders functionality added
549 - Date display now is similar to Netscape Messenger
550 - Many bugs have been reported to the list, and been squashed
551 - Help system developed
552 - Folder list now shows configurable details about messages
553 - It is now possible to select multiple subscribes/unsubscribes
554 - Removed a bunch of annoying "success" screens, improved navigation
555 - Better IMAP session handling
556 - Redid the options section and split it into different parts
557 - Added "view all headers" option when reading a message
558 - In-Reply-To and References headers are inserted when replying to a message.
559 - Changed how attachments are displayed and handled
560 - Rewrote MIME support from scratch, optomizing it an unbelievable amount
561 - Added support for message highlighting
562 - Moved Address and Send buttons on Compose form for easier access
563 - Added Polish translation from Lukasz Klimek <casa@LO.Pila.PL>
564 - Added Swedish translation from Tobias Ekbom
565 - Added Brazilian Portuguse translation from Henrique Moura
566 - Added Dutch translation from Arjen Halma
567
568
569*****************************************
570*** Squirrelmail 0.4 and Pre-Releases ***
571*****************************************
572
573Version 0.4 -- May 15, 2000
574---------------------------
575 - If subject is blank, displays "(no subject)"
576 - Fixed a few minor bugs and typos reported to list
577 - Changed <? to <?php in a few places
578
579Version 0.4pre2 -- May 5, 2000
580------------------------------
581 - Replying sets the "Answered" flag on the original message
582 - When message is sent, it sends you to the folder you were looking at.
583 - HTML based address book search
584 - Made folder listing look first at subscribed folders, making it
585 faster, even if you don't have $folder_prefix set.
586 - Fixed some bugs with default sent and trash folders
587 - Fixed some bugs with folder manipulating
588
589Version 0.4pre1 -- April 29, 2000
590---------------------------------
591 - For speed's sake, unseen messages are only noted on INBOX in left
592 folder list. This will change with 0.5.
593 - Optomizations, fewer IMAP calls, more efficient sorting algorithms.
594 - Fixed all bugs listed in BUG
595 - When inside the Sent folder, it displays "To" instead of "From"
596 - Added ability to go to Next and Previous message while reading a message
597 - Caching of the message headers in mailbox (much faster)
598 - Added a preference that allows users to customize how many messages
599 they see when they index a mailbox
600 - Added flag status showing on message list (Answered, Flagged, and Seen)
601 - Now using PHP session management
602 - Parsing the body for URLs and Email addrs
603 - Added option to configure default folder directory. ie: ~/mail
604 - Configuration script added: config/conf.pl
605 - Addressbook with LDAP support
606 - Big speed improvements with folder listing
607 - Added Subscribe/Unsubscribe to folders
608 - Fixed bug in UW that didn't mark unseen messages
609 - Saving sent messages into $sent_folder
610 - It doesn't bail out if PHP wasn't compiled with --with-gettext.
611 It only uses english in this case.
612 - Added support for Cyrillic (thanks to Artem Botchkov for help)
613 - Included information on Russian Apache from Konstantin Riabitsev
614 - Honoring charset parameter for the body.
615 - Changed the way emptying of trash was done to work better
616 across different IMAP servers
617
618
619*****************************************
620*** Squirrelmail 0.3 and Pre-Releases ***
621*****************************************
622
623Version 0.3.1 -- March 13, 2000
624-------------------------------
625 - Fixed a bug that didn't allow downloading of attachments
626
627Version 0.3 (final) -- March 10, 2000
628-------------------------------------
629 - Fixed bug in smtp.php and made sending RFC complient
630 - Fixed a bug that wouldn't let you rename folders with UW server.
631 - Other minor bugfixes
632
633Version 0.3pre2 -- March 5, 2000
634--------------------------------
635 - Rewrote folder deletion. It works much more flexably now.
636 - Fixed message deletion that didn't always delete the right messages.
637 - Removed font tags
638 - Better character translation, especially for i18n
639 - Added the choice of language as a user preference
640 - Bug fixes, bug fixes, bug fixes
641 - Fixed bugs in message moving and deleting
642 - Rewrote all IMAP functions from scratch
643
644Version 0.3pre1 -- February 17, 2000
645------------------------------------
646 - Added user-specific preferences including:
647 Full Name (for outbound messages)
648 Reply-to address
649 Theme
650 Move messages to trash option (true/false)
651 Wrap incoming text at XX characters
652 Editor window size (in characters)
653 Time between reloads of the left folder list
654 Signature
655 - Rewrote SMTP functions. It now works and handles error correction.
656 - Only folders that you're subscribed to will be listed
657 - Fixed a bug in outbound messages that translated " into \"
658 - Added themes in distribution (7 total)
659 - Added option to send email via sendmail rather than SMTP
660 - Increased speed of viewing folder by date about 25%, and viewing the
661 folder by Subject or Sender by up to 100%.
662 - Added internationalization
663 - Added sending of attachments
664 - Left folder refreshing at intervals (with META tags)
665
666
667*****************************************
668*** Squirrelmail 0.2 and Pre-Releases ***
669*****************************************
670
671Version 0.2.1 -- January 05, 2000
672---------------------------------
673 - Rewrote how MULTIPART messages were handled and made it recursive
674 - We now take into account the encoding type rather than guessing
675 - Redesigned how attachments are displayed
676 - Fixed the bug that wouldn't let you send messages (I hope)
677 - Added a "download message" option
678 - Added a plain text viewer for text messages
679
680Version 0.2 -- January 02, 2000
681-------------------------------
682 - Attachment support (much better MIME support in general)
683 - Themeable support replaced Custom Colors. Themes are pluggable.
684
685
686*****************************************
687*** Squirrelmail 0.1 and Pre-Releases ***
688*****************************************
689
690Version 0.1.2 -- December 20, 1999
691-----------------------------------
692 - Date translation to local time
693 - Rewrote folder fetching code universally
694 - Added attachment detection (no downloads yet)
695 - Fixed many minor bugs that were reported
696
697Version 0.1.1 -- December 16, 1999
698-----------------------------------
699 - Reworked all the IMAP functions to make them RFC 2060 compliant
700 (should work with all IMAP servers)
701 - Added color customization
702 - Sorted folder list (on left bar)
703 - Added MUCH better error correction and notification
704
705Version 0.1 -- December 14, 1999
706--------------------------------
707 - Message composing (with to, cc, bcc)
708 - Message viewing, including HTML messages
709 - Basic MIME support, no attachments...yet
710 - Message sorting by Date, Name, or subject
711 - Folder manipulation (deleting, creating, moving, and renaming)
712 - IMAP email (currently only Cyrus IMAP server has been tested)
713 - Many other features that are basic email functionality
714\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0INSTALL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000017034\007271030256\0010617\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Installing SquirrelMail
715=======================
716
717Table of Contents:
718 1. (PHP4) Configure your webserver to work with PHP4
719 2. (IMAP) Setting up IMAP (not covered)
720 3. (INSTALL) Obtaining and installing SquirrelMail
721 4. (RUN) Running SquirrelMail
722 5. (CHARSETS) Russian Charsets
723
724
725
726
7271. CONFIGURE YOUR WEBSERVER TO WORK WITH PHP4
728---------------------------------------------
729
730 If your webserver does not already have PHP4 you must configure it
731 to work with PHP4. SquirrelMail uses the standard suffix .php for
732 all PHP4 files. This is a quick and dirty guide to installing PHP4
733 to run as CGI under Apache. How you end up doing this is up to you
734 (your mileage may vary).
735
736 NOTE: The new plugin architecture required the use of some functions
737 which are not in all versions of PHP4. You will need at least
738 PHP4 beta2. If you need to upgrade please go ahead and install the
739 latest release version of PHP4.
740
741a. Obtaining and compiling PHP4
742
743 Point your favorite webserver at http://www.php.net/version4/ and
744 download the source. Untar (tar xvfz filename-you-downloaded.tgz)
745 the source, cd into the directory and run configure. To make PHP4
746 work with SquirrelMail a commandline like this should do:
747
748 ./configure --enable-track-vars --enable-force-cgi-redirect --with-gettext
749
750 If you have a database like MySQL you might want to add something
751 like --with-mysql to get database functionality.
752
753 If you're going to use LDAP in the addressbook, you must compile PHP4
754 with --with-ldap (see the PHP4 docs for more information).
755
756 Run make to build the binary file. This will generate a binary file
757 called "php". Move this file into a CGI-directory.
758
759 You might also want to read the INSTALL file in the PHP-distribution
760 :-)
761
762b. Changing php.ini
763
764 PHP defaults to look for php.ini (PHP's configuration file) in
765 /usr/local/lib. However, for security reasons, it is suggested
766 that the location of this file is changed to someplace else. This
767 can be done at configure time with the configuration directive
768 --with-config-file-path=PATH.
769
770 Edit the php.ini file and make sure session.use_cookies is 1. Also
771 be sure to change the session.save_path to someplace that can only
772 be read and written to by the webserver. session.save_path is the
773 location that PHP's session data will be written to.
774
775 SECURITY WARNING - If a user has access to write PHP scripts on your
776 system and knows the location where PHP stores session data, he
777 could get a listing of the sessions being used and then read a given
778 session's data with his own PHP script. Caution should be used when
779 setting up permissions and locations of php.ini and the session data.
780
781c. Setting up .php files to use PHP4
782
783 You need to create a .htaccess file in you SquirrelMail directory
784 that looks something like this:
785
786 AddType application/php4script .php
787 Action application/php4script /cgi-bin/php
788
789 You could also add these lines to your Apache configuration file.
790
791d. Running into trouble
792
793 Setting up Apache with PHP4 can be a non-trivial task. Read the PHP4
794 and Apache documentation carefully if you run into trouble. If you
795 have an experienced system administrator around ask her/him to help
796 you.
797
7982. SETTING UP IMAP
799------------------
800
801 This is not covered here :-/
802
8033. OBTAINING AND INSTALLING SQUIRRELMAIL
804----------------------------------------
805
806 SquirrelMail is still under development. Therefore you should always
807 get the newest version around. Look at
808 http://www.squirrelmail.org/index.php3?page=5 to see what it
809 is. If you want to be bleeding edge you might want to consider using
810 the latest CVS version (with the latest and most fashionable of
811 bugs).
812
813a. Download SquirrelMail
814
815 Get SquirrelMail from the address above if you do not have it or are
816 uncertain if you have the newest version. Untar (again tar xvfz
817 filename.tgz) SquirrelMail in a directory that is readable for your
818 webserver.
819
820b. Setting up directories
821
822 SquirrelMail uses two directories to store user configuration and
823 attachments that are about to be sent. You might want to have these
824 directories outside of your web tree.
825
826 The data directory is used for storing user preferences, like
827 signature, name and theme. When unpacking the sources this directory
828 is created as data/ in your SquirrelMail directory. This directory
829 must be writable by the webserver. If your webserver is running as
830 the user "nobody" you can fix this by running:
831
832 $ chown -R nobody data
833 $ chgrp -R nobody data
834
835 Keep in mind that with different installations, the web server could
836 typically run as userid/groupid of nobody/nobody, nobody/nogroup,
837 apache/apache or www-data/www-data. The best way to find out is to read
838 the web server's configuration file.
839
840 There also needs to be a directory where attachments are stored
841 before they are sent. Since personal mail is stored in this
842 directory you might want to be a bit careful about how you set it
843 up. It should be owned by another user than the webserver is running
844 as (root might be a good choice) and the webserver should have write
845 and execute permissions on the directory, but should not have read
846 permissions. You could do this by running these commands (still
847 granted that the webserver is running as nobody/nobody)
848
849 $ cd /var/some/place
850 $ mkdir SomeDirectory
851 $ chgrp -R nobody SomeDirectory
852 $ chmod 730 SomeDirectory
853
854 If you trust all the users on you system not to read mail they are
855 not supposed to read change the last line to chmod 777 SomeDirectory
856 or simply use /tmp as you attachments directory.
857
858 If a user is aborting a mail but has uploaded some attachments to it
859 the files will be lying around in this directory forever if you do not
860 remove them. To fix this, it is recommended to create a cron job that
861 deletes everything in the attachment directory. Something similar
862 to the following will be good enough:
863
864 $ cd /var/attach/directory
865 $ rm -f *
866
867 However, this will delete attachments that are currently in use by people
868 sending email when the cron job runs. You can either (1) make sure that
869 the cron job runs at an obscure hour and hope that nobody gets upset, or
870 (2) you can run a modified version of the commands above. Check out the
871 man pages for other commands such as 'find' or 'tmpreaper'.
872
873 One sample script you could set up that would erase all attachments, but
874 wouldn't erase preferences, address books, or the like (just in case your
875 attachment directory is the same as your data directory) might look like
876 this:
877
878 $ rm `find /var/attach/directory -atime +2 | grep -v "\." | grep -v _`
879
880 Remember to be careful with whatever method you do use, and to test out
881 the command before it potentially wipes out everyone's preferences.
882
883c. Setting up SquirrelMail
884
885 There are two ways to configure Squirrelmail. In the config/ directory,
886 there is a perl script called conf.pl that will aid you in the
887 configuration process. This is the recommended way of handling
888 the config.
889
890 You can also copy the config/config_default.php file to config/config.php
891 and edit that manually.
892
8934. RUNNING SQUIRRELMAIL
894-----------------------
895
896 Point your browser at the URL at which SquirrelMail is installed. A
897 possible example of this is:
898 http://www.yourdomain.com/squirrelmail
899
900 It should be pretty stright forward to use. Some more documentation
901 might show up one day or another.
902
903
9045. RUSSIAN CHARSETS
905-------------------
906
907 For information on how to make SquirrelMail work with Russian
908 Apache, see the README.russian_apache in the doc/ subdirectory.
909\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0MIRRORS\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000342\007302403714\0010636\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0SquirrelMail Download Mirrors
910
911[Sweden] http://yazzy.org/squirrel/
912 ftp://yazzy.org/pub/mirrors/squirrelmail/
913
914[Texas, USA] http://nerf-herder.net/squirrel/
915 ftp://nerf-herder.net/pub/squirrel/
916\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0README\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000005122\007360464270\0010447\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0SquirrelMail
917http://www.squirrelmail.org
918
919Introduction:
920-------------
921SquirrelMail is a standards-based webmail package written in PHP4. It
922includes built-in pure PHP support for the IMAP and SMTP protocols, and all
923pages render in pure HTML 4.0 (with no Javascript) for maximum compatibility
924across browsers. It has very few requirements and is very easy to configure
925and install. SquirrelMail has a all the functionality you would want from an
926email client, including strong MIME support, address books, and folder
927manipulation.
928
929Why did you guys create SquirrelMail? The need arose in our organization
930for the access of email and address books from anywhere in the world.
931Obviously a web interface is ideal for this, given that the user has access
932to the Internet. After reviewing several open source projects, we realized
933that we were going to need to do some fairly major customizations to get
934things to be a nice fit for our needs. So the decision was made to create
935our own for some of these reasons, and for fun (we really like PHP4). We
936decided to open source the project to contribute to the community that has
937contributed so much to us. Since then, it has grown much bigger than we
938ever imagined, and we have an awesome development team who are actively
939working on the project.
940
941We would love to hear from you! The nature of open source projects make it
942hard to know who all is using your product. It is always nice when we get
943emails from people just telling us that they're using SquirrelMail. If you
944have a few minutes, please send us an email to let us know! You can send it
945to our mailing list: squirrelmail-list@sourceforge.net
946
947You can also go to the page below and fill out a small form to get listed
948with the list of people already using SquirrelMail (free advertising).
949
950 http://www.squirrelmail.org/feedback.php
951
952Contact:
953--------
954It is pretty easy to get in contact with the developers if you need help or
955if you find bugs that need to be reported. The best way to contact us would
956be through our mailing list which is actively monitored. Just send an email
957to:
958
959 squirrelmail-list@sourceforge.net
960
961If you wish to actually subscribe to our mailing list, please visit our web
962page for instructions (http://www.squirrelmail.org) and go to the section
963titled "Mailing List".
964
965Installation:
966-------------
967For detailed instructions on how to install SquirrelMail on your server,
968please refer to the INSTALL document in the same directory as this document.
969
970Licensing:
971----------
972This product is distributed under the GPL. Please read through the file
973COPYING for more information about our license.
974\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0UPGRADE\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000010643\007272061140\0010574\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Upgrading from 0.3 or higher
975============================
976
977If you are upgrading from versions 0.3 or higher of SquirrelMail, you can
978use this guide to make the transition a bit smoother. If you have been
979using a previous version (0.1 or 0.2), it is suggested that you just start
980from scratch and configure your settings as if it was your first install.
981
982NOTE: The new plugin architecture required the use of some functions which
983are not in all versions of PHP4. You will need at least PHP4 beta2. If you
984need to upgrade please go ahead and install the latest release version of
985PHP4.
986
987
9881. Backup old install
989======================
990
991Make a backup of your current SquirrelMail directory. If you use "cp", be
992sure to use the "-Rp" options. -R means recursive, and -p will save the
993permissions in the directory.
994
995In this example, we assume that your httpd document directory is
996/home/httpd/html, that your SquirrelMail install is located at
997/home/httpd/html/squirrelmail-0.4, and that your new SM version is 0.5.
998Substitute version numbers and names as required.
999
1000 $ cd /home/httpd/html
1001 $ cp -Rp squirrelmail-0.4 squirrelmail-0.4.bak
1002
1003
10042. Unarchive new SquirrelMail
1005==============================
1006Make sure that you are in your httpd document directory (/home/httpd/html)
1007and then unarchive the SquirrelMail archive (whatever the filename is):
1008
1009 $ tar -zxvf squirrelmail-0.5.tar.gz
1010
1011
10123. Copy important files from old install
1013=========================================
1014The important files to copy are:
1015 A. Preferences
1016 B. Config details
1017 C. Plugins
1018 D. Themes (if you've edited or added any of them)
1019
1020A. Preferences
1021
1022First, copy your preference data over to the new directory. Usually this is
1023ok, but if you are upgrading from to 1.0.5 or later from anything less than
10241.0.5, we strongly suggest you let your users reset their preferences.
1025There were important security upgrades in 1.0.5 regarding preference files.
1026
1027 $ cp squirrelmail-0.4.bak/data/* squirrelmail-0.5/data
1028
1029B. Config details
1030
1031If at all possible, start the configuration process from scratch. It is
1032much less prone to missing configuration options than copying your old
1033configuration. Ideally, you should just run conf.pl to reconfigure
1034SquirrelMail. If you decide to copy your old config.php over, we strongly
1035recommend that you run conf.pl to make sure things are correct and then save
1036the config file.
1037
1038 $ cp squirrelmail-0.4.bak/config/config.php squirrelmail-0.5/config
1039
1040C. Copy plugins
1041
1042Like SquirrelMail, plugins are fequently updated for improvements, as well
1043as to make them compatible with new SquirrelMail releases. It is suggested
1044that you download a new plugins archive at the same time you download your
1045SquirrelMail install, and that you install your plugins fresh (it's easy,
1046don't panic!).
1047
1048If you prefer to just copy your old plugins over (if it's the same version
1049or if you are lazy), you may do so. If you notice irregularities with the
1050plugins under the new SquirrelMail, try installing new versions of the
1051plugins.
1052
1053 $ cp -Rp squirrelmail-0.4.bak/plugins/* squirrelmail-0.5/plugins
1054
1055D. Copy themes
1056
1057If you've created or modified themes, you should copy just those to the new
1058SquirrelMail themes direcory. To just copy them all over to the new
1059SquirrelMail installation, you can run one command.
1060
1061 $ cp squirrelmail-0.4.bak/themes/* squirrelmail-0.5/themes/
1062
1063(While you are at it, you should send them to us! We might add them to the
1064themes in the standard install!)
1065
1066
10674. Change permissions
1068======================
1069The web server must have write permission to the data directory. In this
1070example, we assume that user "nobody" and group "nobody" are the web server
1071as is often the case with Apache.
1072
1073 $ cd squirrelmail-0.5
1074 $ chown -R nobody.nobody data
1075
1076See INSTALL for alternate userid/groupid pairs. Additionally, if "chown
1077user.group" doesn't work, you can use "chown user" and "chgrp group"
1078instead. See the man pages for these commands for more information.
1079
1080
10815. Run conf.pl
1082===============
1083Run config/conf.pl to see the new configuration options available with the
1084new version, as well as to verify that all of your old options are set
1085properly.
1086
1087
10886. DONE!
1089=========
1090That should be all! The most important part is copying your users'
1091preference files back into the new data directory. This will insure that
1092your users will have their old preferences. Remember to do so with caution,
1093especially if you are upgrading from a version before 1.0.5 to version 1.0.5
1094or later.
1095\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00040775\00000000\00000000\000000000000\007402645100\0011025\0 5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00040775\00000000\00000000\000000000000\007402645100\0011460\0 5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/Root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000103\007366774401\0012335\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0:ext:fallas@cvs.squirrelmail.sourceforge.net:/cvsroot/squirrelmail
1096\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/Repository\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000024\007366774401\0013573\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0squirrelmail/config
1097\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/CVS/Entries\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100644\00000000\00000000\000000000337\007402645100\0013012\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0/.cvsignore/1.1/Fri Oct 20 15:13:17 2000//
1098/index.php/1.1/Fri Oct 27 02:41:25 2000//
1099/conf.pl/1.64/Mon Dec 3 09:47:44 2001//
1100/config_default.php/1.52/Mon Dec 3 09:47:44 2001//
1101/ri_once.pl/1.1/Thu Nov 8 23:04:56 2001//
1102D
1103\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/.cvsignore\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100664\00000000\00000000\000000000013\007174060415\0013022\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config.php
1104\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0config/conf.pl\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\00100755\00000000\00000000\000000214057\007402645100\0012316\0 0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0ustar \0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0root\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0#!/usr/bin/perl
1105# conf.pl
1106# Luke Ehresman (luke@squirrelmail.org)
1107#
1108# A simple configure script to configure squirrelmail
1109#
1110# $Id$
1111############################################################
1112$conf_pl_version = "x63";
1113
1114############################################################
1115# Some people try to run this as a CGI. That's wrong!
1116############################################################
1117if(defined($ENV{'PATH_INFO'}) || defined($ENV{'QUERY_STRING'}) ||
1118 defined($ENV{'REQUEST_METHOD'})) {
1119 print "Content-Type: text/html\n\n";
1120 print "You must run this script from the command line.";
1121 exit;
1122}
1123
1124############################################################
1125# First, lets read in the data already in there...
1126############################################################
1127if ( -e "config.php") {
1128 open (FILE, "config.php");
1129 while ($line = <FILE>) {
1130 if ($line =~ /^\s+\$/) {
1131 $line =~ s/^\s+\$//;
1132 $var = $line;
1133
1134 $var =~ s/=/EQUALS/;
1135 if ($var =~ /^([a-z]|[A-Z])/) {
1136 @o = split(/\s*EQUALS\s*/, $var);
1137 if ($o[0] eq "config_version") {
1138 $o[1] =~ s/[\n|\r]//g;
1139 $o[1] =~ s/\";\s*$//;
1140 $o[1] =~ s/;$//;
1141 $o[1] =~ s/^\"//;
1142
1143 $config_version = $o[1];
1144 close (FILE);
1145 }
1146 }
1147 }
1148 }
1149 close (FILE);
1150
1151 if ($config_version ne $conf_pl_version) {
1152 system "clear";
1153 print $WHT."WARNING:\n".$NRM;
1154 print " The file \"config/config.php\" was found, but it is for an older version of\n";
1155 print " SquirrelMail. It is possible to still read the defaults from this file\n";
1156 print " but be warned that many preferences change between versions. It is\n";
1157 print " recommended that you start with a clean config.php for each upgrade that\n";
1158 print " you do. To do this, just move config/config.php out of the way.\n\n";
1159 print "Continue loading with the old config.php [y/N]? ";
1160 $ctu = <STDIN>;
1161 if (($ctu !~ /^y\n/i) || ($ctu =~ /^\n/)) {
1162 exit;
1163 }
1164
1165 print "\nDo you want me to stop warning you [y/N]? ";
1166 $ctu = <STDIN>;
1167 if ($ctu =~ /^y\n/i) {
1168 $print_config_version = $conf_pl_version;
1169 } else {
1170 $print_config_version = $config_version;
1171 }
1172 } else {
1173 $print_config_version = $config_version;
1174 }
1175
1176 $config = 1;
1177 open (FILE, "config.php");
1178} elsif (-e "config_default.php") {
1179 open (FILE, "config_default.php");
1180 while ($line = <FILE>) {
1181 if ($line =~ /^\s+\$/) {
1182 $line =~ s/^\s+\$//;
1183 $var = $line;
1184
1185 $var =~ s/=/EQUALS/;
1186 if ($var =~ /^([a-z]|[A-Z])/) {
1187 @o = split(/\s*EQUALS\s*/, $var);
1188 if ($o[0] eq "config_version") {
1189 $o[1] =~ s/[\n|\r]//g;
1190 $o[1] =~ s/\";\s*$//;
1191 $o[1] =~ s/;$//;
1192 $o[1] =~ s/^\"//;
1193
1194 $config_version = $o[1];
1195 close (FILE);
1196 }
1197 }
1198 }
1199 }
1200 close (FILE);
1201
1202 if ($config_version ne $conf_pl_version) {
1203 system "clear";
1204 print $WHT."WARNING:\n".$NRM;
1205 print " You are trying to use a \"config_default.php\" from an older version of\n";
1206 print " SquirrelMail. This is HIGHLY unrecommended. You should get the\n";
1207 print " \"config_default.php\" that matches the version of SquirrelMail that you\n";
1208 print " are running. You can get this from the SquirrelMail web page by going\n";
1209 print " to: http://www.squirrelmail.org.\n\n";
1210 print "Continue loading with the old config_default.php (not a good idea) [y/N]? ";
1211 $ctu = <STDIN>;
1212 if (($ctu !~ /^y\n/i) || ($ctu =~ /^\n/)) {
1213 exit;
1214 }
1215
1216 print "\nDo you want me to stop warning you [y/N]? ";
1217 $ctu = <STDIN>;
1218 if ($ctu =~ /^y\n/i) {
1219 $print_config_version = $conf_pl_version;
1220 } else {
1221 $print_config_version = $config_version;
1222 }
1223 } else {
1224 $print_config_version = $config_version;
1225 }
1226 $config = 2;
1227 open (FILE, "config_default.php");
1228} else {
1229 print "No configuration file found. Please get config_default.php or\n";
1230 print "config.php before running this again. This program needs a\n";
1231 print "default config file to get default values.\n";
1232 exit;
1233}
1234
1235# Reads and parses the current configuration file (either
1236# config.php or config_default.php).
1237
1238while ($line = <FILE>) {
1239 if ($line =~ /^\s+\$/) {
1240 $line =~ s/^\s+\$//;
1241 $var = $line;
1242
1243 $var =~ s/=/EQUALS/;
1244 if ($var =~ /^([a-z]|[A-Z])/) {
1245 @options = split(/\s*EQUALS\s*/, $var);
1246 $options[1] =~ s/[\n|\r]//g;
1247 $options[1] =~ s/\";\s*$//;
1248 $options[1] =~ s/;$//;
1249 $options[1] =~ s/^\"//;
1250
1251 if ($options[0] =~ /^theme\[[0-9]+\]\["PATH"\]/) {
1252 $sub = $options[0];
1253 $sub =~ s/\]\["PATH"\]//;
1254 $sub =~ s/.*\[//;
1255 if (-e "../themes") {
1256 $options[1] =~ s/^\.\.\/config/\.\.\/themes/;
1257 }
1258 $theme_path[$sub] = $options[1];
1259 } elsif ($options[0] =~ /^theme\[[0-9]+\]\["NAME"\]/) {
1260 $sub = $options[0];
1261 $sub =~ s/\]\["NAME"\]//;
1262 $sub =~ s/.*\[//;
1263 $theme_name[$sub] = $options[1];
1264 } elsif ($options[0] =~ /^plugins\[[0-9]+\]/) {
1265 $sub = $options[0];
1266 $sub =~ s/\]//;
1267 $sub =~ s/^plugins\[//;
1268 $plugins[$sub] = $options[1];
1269 } elsif ($options[0] =~ /^ldap_server\[[0-9]+\]/) {
1270 $sub = $options[0];
1271 $sub =~ s/\]//;
1272 $sub =~ s/^ldap_server\[//;
1273 $continue = 0;
1274 while (($tmp = <FILE>) && ($continue != 1)) {
1275 if ($tmp =~ /\);\s*$/) {
1276 $continue = 1;
1277 }
1278
1279 if ($tmp =~ /^\s*\"host\"/i) {
1280 $tmp =~ s/^\s*\"host\"\s*=>\s*\"//i;
1281 $tmp =~ s/\",\s*$//;
1282 $tmp =~ s/\"\);\s*$//;
1283 $host = $tmp;
1284 } elsif ($tmp =~ /^\s*\"base\"/i) {
1285 $tmp =~ s/^\s*\"base\"\s*=>\s*\"//i;
1286 $tmp =~ s/\",\s*$//;
1287 $tmp =~ s/\"\);\s*$//;
1288 $base = $tmp;
1289 } elsif ($tmp =~ /^\s*\"charset\"/i) {
1290 $tmp =~ s/^\s*\"charset\"\s*=>\s*\"//i;
1291 $tmp =~ s/\",\s*$//;
1292 $tmp =~ s/\"\);\s*$//;
1293 $charset = $tmp;
1294 } elsif ($tmp =~ /^\s*\"port\"/i) {
1295 $tmp =~ s/^\s*\"port\"\s*=>\s*\"//i;
1296 $tmp =~ s/\",\s*$//;
1297 $tmp =~ s/\"\);\s*$//;
1298 $port = $tmp;
1299 } elsif ($tmp =~ /^\s*\"maxrows\"/i) {
1300 $tmp =~ s/^\s*\"maxrows\"\s*=>\s*\"//i;
1301 $tmp =~ s/\",\s*$//;
1302 $tmp =~ s/\"\);\s*$//;
1303 $maxrows = $tmp;
1304 } elsif ($tmp =~ /^\s*\"name\"/i) {
1305 $tmp =~ s/^\s*\"name\"\s*=>\s*\"//i;
1306 $tmp =~ s/\",\s*$//;
1307 $tmp =~ s/\"\);\s*$//;
1308 $name = $tmp;
1309 }
1310 }
1311 $ldap_host[$sub] = $host;
1312 $ldap_base[$sub] = $base;
1313 $ldap_name[$sub] = $name;
1314 $ldap_port[$sub] = $port;
1315 $ldap_maxrows[$sub] = $maxrows;
1316 $ldap_charset[$sub] = $charset;
1317 } else {
1318 ${$options[0]} = $options[1];
1319 }
1320 }
1321 }
1322}
1323close FILE;
1324if ($useSendmail ne "true") {
1325 $useSendmail = "false";
1326}
1327if (!$sendmail_path) {
1328 $sendmail_path = "/usr/sbin/sendmail";
1329}
1330if (!$default_unseen_notify) {
1331 $default_unseen_notify = 2;
1332}
1333if (!$default_unseen_type) {
1334 $default_unseen_type = 1;
1335}
1336if (!$config_use_color) {
1337 $config_use_color = 1;
1338}
1339if (!$invert_time) {
1340 $invert_time = "false";
1341}
1342if (!$force_username_lowercase) {
1343 $force_username_lowercase = "false";
1344}
1345if (!$optional_delimiter) {
1346 $optional_delimiter = "detect";
1347}
1348if (!$use_authenticated_smtp) {
1349 $use_authenticated_smtp = "false";
1350}
1351if (!$auto_create_special) {
1352 $auto_create_special = "false";
1353}
1354if(!$default_use_priority) {
1355 $default_use_priority = "true";
1356}
1357if(!$hide_sm_attributions) {
1358 $hide_sm_attributions = "false";
1359}
1360
1361#####################################################################################
1362if ($config_use_color == 1) {
1363 $WHT = "\x1B[37;1m";
1364 $NRM = "\x1B[0m";
1365} else {
1366 $WHT = "";
1367 $NRM = "";
1368 $config_use_color = 2;
1369}
1370
1371while (($command ne "q") && ($command ne "Q")) {
1372 system "clear";
1373 print $WHT."SquirrelMail Configuration : ".$NRM;
1374 if ($config == 1) { print "Read: config.php"; }
1375 elsif ($config == 2) { print "Read: config_default.php"; }
1376 print "\n";
1377 print "---------------------------------------------------------\n";
1378
1379 if ($menu == 0) {
1380 print $WHT."Main Menu --\n".$NRM;
1381 print "1. Organization Preferences\n";
1382 print "2. Server Settings\n";
1383 print "3. Folder Defaults\n";
1384 print "4. General Options\n";
1385 print "5. Themes\n";
1386 print "6. Address Books (LDAP)\n";
1387 print "7. Message of the Day (MOTD)\n";
1388 print "8. Plugins\n";
1389 print "\n";
1390 print "D. Set pre-defined settings for specific IMAP servers\n";
1391 print "\n";
1392 } elsif ($menu == 1) {
1393 print $WHT."Organization Preferences\n".$NRM;
1394 print "1. Organization Name : $WHT$org_name$NRM\n";
1395 print "2. Organization Logo : $WHT$org_logo$NRM\n";
1396 print "3. Organization Title : $WHT$org_title$NRM\n";
1397 print "4. Signout Page : $WHT$signout_page$NRM\n";
1398 print "5. Default Language : $WHT$squirrelmail_default_language$NRM\n";
1399 print "\n";
1400 print "R Return to Main Menu\n";
1401 } elsif ($menu == 2) {
1402 print $WHT."Server Settings\n".$NRM;
1403 print "1. Domain : $WHT$domain$NRM\n";
1404 print "2. IMAP Server : $WHT$imapServerAddress$NRM\n";
1405 print "3. IMAP Port : $WHT$imapPort$NRM\n";
1406 print "4. Use Sendmail/SMTP : $WHT";
1407 if ($useSendmail eq "true") {
1408 print "Sendmail";
1409 } else {
1410 print "SMTP";
1411 }
1412 print "$NRM\n";
1413 if ($useSendmail eq "true") {
1414 print "5. Sendmail Path : $WHT$sendmail_path$NRM\n";
1415 } else {
1416 print "6. SMTP Server : $WHT$smtpServerAddress$NRM\n";
1417 print "7. SMTP Port : $WHT$smtpPort$NRM\n";
1418 print "8. Authenticated SMTP : $WHT$use_authenticated_smtp$NRM\n";
1419 }
1420 print "9. Server : $WHT$imap_server_type$NRM\n";
1421 print "10. Invert Time : $WHT$invert_time$NRM\n";
1422 print "11. Delimiter : $WHT$optional_delimiter$NRM\n";
1423 print "\n";
1424 print "R Return to Main Menu\n";
1425 } elsif ($menu == 3) {
1426 print $WHT."Folder Defaults\n".$NRM;
1427 print "1. Default Folder Prefix : $WHT$default_folder_prefix$NRM\n";
1428 print "2. Show Folder Prefix Option : $WHT$show_prefix_option$NRM\n";
1429 print "3. Trash Folder : $WHT$trash_folder$NRM\n";
1430 print "4. Sent Folder : $WHT$sent_folder$NRM\n";
1431 print "5. Drafts Folder : $WHT$draft_folder$NRM\n";
1432 print "6. By default, move to trash : $WHT$default_move_to_trash$NRM\n";
1433 print "7. By default, move to sent : $WHT$default_move_to_sent$NRM\n";
1434 print "8. By default, save as draft : $WHT$default_save_as_draft$NRM\n";
1435 print "9. List Special Folders First : $WHT$list_special_folders_first$NRM\n";
1436 print "10. Show Special Folders Color : $WHT$use_special_folder_color$NRM\n";
1437 print "11. Auto Expunge : $WHT$auto_expunge$NRM\n";
1438 print "12. Default Sub. of INBOX : $WHT$default_sub_of_inbox$NRM\n";
1439 print "13. Show 'Contain Sub.' Option : $WHT$show_contain_subfolders_option$NRM\n";
1440 print "14. Default Unseen Notify : $WHT$default_unseen_notify$NRM\n";
1441 print "15. Default Unseen Type : $WHT$default_unseen_type$NRM\n";
1442 print "16. Auto Create Special Folders : $WHT$auto_create_special$NRM\n";
1443 print "\n";
1444 print "R Return to Main Menu\n";
1445 } elsif ($menu == 4) {
1446 print $WHT."General Options\n".$NRM;
1447 print "1. Default Charset : $WHT$default_charset$NRM\n";
1448 print "2. Data Directory : $WHT$data_dir$NRM\n";
1449 print "3. Attachment Directory : $WHT$attachment_dir$NRM\n";
1450 print "4. Default Left Size : $WHT$default_left_size$NRM\n";
1451 print "5. Usernames in Lowercase : $WHT$force_username_lowercase$NRM\n";
1452 print "6. Allow use of priority : $WHT$default_use_priority$NRM\n";
1453 print "7. Hide SM attributions : $WHT$hide_sm_attributions$NRM\n";
1454 print "\n";
1455 print "R Return to Main Menu\n";
1456 } elsif ($menu == 5) {
1457 print $WHT."Themes\n".$NRM;
1458 print "1. Change Themes\n";
1459 for ($count = 0; $count <= $#theme_name; $count++) {
1460 print " > $theme_name[$count]\n";
1461 }
1462 print "2. CSS File : $WHT$theme_css$NRM\n";
1463 print "\n";
1464 print "R Return to Main Menu\n";
1465 } elsif ($menu == 6) {
1466 print $WHT."Address Books (LDAP)\n".$NRM;
1467 print "1. Change Servers\n";
1468 for ($count = 0; $count <= $#ldap_host; $count++) {
1469 print " > $ldap_host[$count]\n";
1470 }
1471 print "2. Use Javascript Address Book Search : $WHT$default_use_javascript_addr_book$NRM\n";
1472 print "\n";
1473 print "R Return to Main Menu\n";
1474 } elsif ($menu == 7) {
1475 print $WHT."Message of the Day (MOTD)\n".$NRM;
1476 print "\n$motd\n";
1477 print "\n";
1478 print "1 Edit the MOTD\n";
1479 print "\n";
1480 print "R Return to Main Menu\n";
1481 } elsif ($menu == 8) {
1482 print $WHT."Plugins\n".$NRM;
1483 print " Installed Plugins\n";
1484 $num = 0;
1485 for ($count = 0; $count <= $#plugins; $count++) {
1486 $num = $count + 1;
1487 print " $num. $plugins[$count]\n";
1488 }
1489 print "\n Available Plugins:\n";
1490 opendir(DIR, "../plugins");
1491 @files = readdir(DIR);
1492 $pos=0;
1493 @unused_plugins = ();
1494 for ($i=0; $i <= $#files; $i++) {
1495 if ( -d "../plugins/" . $files[$i] &&
1496 $files[$i] !~ /^\./ && $files[$i] ne "CVS") {
1497 $match = 0;
1498 for ($k=0; $k<=$#plugins; $k++) {
1499 if ($plugins[$k] eq $files[$i]) {
1500 $match = 1;
1501 }
1502 }
1503 if ($match == 0) {
1504 $unused_plugins[$pos] = $files[$i];
1505 $pos++;
1506 }
1507 }
1508 }
1509
1510 for ($i=0; $i<=$#unused_plugins; $i++) {
1511 $num = $num + 1;
1512 print " $num. $unused_plugins[$i]\n";
1513 }
1514 closedir DIR;
1515
1516 print "\n";
1517 print "A Sanitize all plugins for use with Squirrelmail 1.2\n";
1518 print "\n";
1519 print "R Return to Main Menu\n";
1520 }
1521 if ($config_use_color == 1) {
1522 print "C. Turn color off\n";
1523 } else {
1524 print "C. Turn color on\n";
1525 }
1526 print "S Save data\n";
1527 print "Q Quit\n";
1528
1529 print "\n";
1530 print "Command >> ".$WHT;
1531 $command = <STDIN>;
1532 $command =~ s/[\n|\r]//g;
1533 $command =~ tr/A-Z/a-z/;
1534 print "$NRM\n";
1535
1536 # Read the commands they entered.
1537 if ($command eq "r") {
1538 $menu = 0;
1539 } elsif ($command eq "s") {
1540 save_data ();
1541 print "Data saved in config.php\n";
1542 print "Press enter to continue...";
1543 $tmp = <STDIN>;
1544 $saved = 1;
1545 } elsif (($command eq "q") && ($saved == 0)) {
1546 print "You have not saved your data.\n";
1547 print "Save? [".$WHT."Y".$NRM."/n]: ";
1548 $save = <STDIN>;
1549 if (($save =~ /^y/i) || ($save =~ /^\s*$/)) {
1550 save_data ();
1551 }
1552 } elsif ($command eq "c") {
1553 if ($config_use_color == 1) {
1554 $config_use_color = 2;
1555 $WHT = "";
1556 $NRM = "";
1557 } else {
1558 $config_use_color = 1;
1559 $WHT = "\x1B[37;1m";
1560 $NRM = "\x1B[0m";
1561 }
1562 } elsif ($command eq "d" && $menu == 0) {
1563 set_defaults ();
1564 } else {
1565 $saved = 0;
1566 if ($menu == 0) {
1567 if (($command > 0) && ($command < 9)) {
1568 $menu = $command;
1569 }
1570 } elsif ($menu == 1) {
1571 if ($command == 1) { $org_name = command1 (); }
1572 elsif ($command == 2) { $org_logo = command2 (); }
1573 elsif ($command == 3) { $org_title = command3 (); }
1574 elsif ($command == 4) { $signout_page = command4 (); }
1575 elsif ($command == 5) { $squirrelmail_default_language = command5(); }
1576 } elsif ($menu == 2) {
1577 if ($command == 1) { $domain = command11 (); }
1578 elsif ($command == 2) { $imapServerAddress = command12 (); }
1579 elsif ($command == 3) { $imapPort = command13 (); }
1580 elsif ($command == 4) { $useSendmail = command14 (); }
1581 elsif ($command == 5) { $sendmail_path = command15 (); }
1582 elsif ($command == 6) { $smtpServerAddress = command16 (); }
1583 elsif ($command == 7) { $smtpPort = command17 (); }
1584 elsif ($command == 8) { $use_authenticated_smtp = command18 (); }
1585 elsif ($command == 9) { $imap_server_type = command19 (); }
1586 elsif ($command == 10) { $invert_time = command110 (); }
1587 elsif ($command == 11) { $optional_delimiter = command111 (); }
1588 } elsif ($menu == 3) {
1589 if ($command == 1) { $default_folder_prefix = command21 (); }
1590 elsif ($command == 2) { $show_prefix_option = command22 (); }
1591 elsif ($command == 3) { $trash_folder = command23a (); }
1592 elsif ($command == 4) { $sent_folder = command23b (); }
1593 elsif ($command == 5) { $draft_folder = command23c (); }
1594 elsif ($command == 6) { $default_move_to_trash = command24a (); }
1595 elsif ($command == 7) { $default_move_to_sent = command24b (); }
1596 elsif ($command == 8) { $default_save_as_draft = command24c (); }
1597 elsif ($command == 9) { $list_special_folders_first = command27 (); }
1598 elsif ($command == 10) { $use_special_folder_color = command28 (); }
1599 elsif ($command == 11) { $auto_expunge = command29 (); }
1600 elsif ($command == 12) { $default_sub_of_inbox = command210(); }
1601 elsif ($command == 13) { $show_contain_subfolders_option = command211(); }
1602 elsif ($command == 14) { $default_unseen_notify = command212(); }
1603 elsif ($command == 15) { $default_unseen_type = command213(); }
1604 elsif ($command == 16) { $auto_create_special = command214(); }
1605 } elsif ($menu == 4) {
1606 if ($command == 1) { $default_charset = command31 (); }
1607 elsif ($command == 2) { $data_dir = command33 (); }
1608 elsif ($command == 3) { $attachment_dir = command34 (); }
1609 elsif ($command == 4) { $default_left_size = command35 (); }
1610 elsif ($command == 5) { $force_username_lowercase = command36 (); }
1611 elsif ($command == 6) { $default_use_priority = command37 (); }
1612 elsif ($command == 7) { $hide_sm_attributions = command38 (); }
1613 } elsif ($menu == 5) {
1614 if ($command == 1) { command41 (); }
1615 elsif ($command == 2) { $theme_css = command42 (); }
1616 } elsif ($menu == 6) {
1617 if ($command == 1) { command61(); }
1618 elsif ($command == 2) { command62(); }
1619 } elsif ($menu == 7) {
1620 if ($command == 1) { $motd = command71(); }
1621 } elsif ($menu == 8) {
1622 if ($command =~ /^[0-9]+/) { @plugins = command81(); }
1623 elsif ($command eq "a") { command8s(); }
1624 }
1625 }
1626}
1627
1628####################################################################################
1629
1630# org_name
1631sub command1 {
1632 print "We have tried to make the name SquirrelMail as transparent as\n";
1633 print "possible. If you set up an organization name, most places where\n";
1634 print "SquirrelMail would take credit will be credited to your organization.\n";
1635 print "\n";
1636 print "[$WHT$org_name$NRM]: $WHT";
1637 $new_org_name = <STDIN>;
1638 if ($new_org_name eq "\n") {
1639 $new_org_name = $org_name;
1640 } else {
1641 $new_org_name =~ s/[\r|\n]//g;
1642 }
1643 return $new_org_name;
1644}
1645
1646
1647# org_logo
1648sub command2 {
1649 print "Your organization's logo is an image that will be displayed at\n";
1650 print "different times throughout SquirrelMail. This is asking for the\n";
1651 print "literal (/usr/local/squirrelmail/images/logo.jpg) or relative\n";
1652 print "(../images/logo.jpg) path to your logo.\n";
1653 print "\n";
1654 print "[$WHT$org_logo$NRM]: $WHT";
1655 $new_org_logo = <STDIN>;
1656 if ($new_org_logo eq "\n") {
1657 $new_org_logo = $org_logo;
1658 } else {
1659 $new_org_logo =~ s/[\r|\n]//g;
1660 }
1661 return $new_org_logo;
1662}
1663
1664# org_title
1665sub command3 {
1666 print "A title is what is displayed at the top of the browser window in\n";
1667 print "the titlebar. Usually this will end up looking something like:\n";
1668 print "\"Netscape: $org_title\"\n";
1669 print "\n";
1670 print "[$WHT$org_title$NRM]: $WHT";
1671 $new_org_title = <STDIN>;
1672 if ($new_org_title eq "\n") {
1673 $new_org_title = $org_title;
1674 } else {
1675 $new_org_title =~ s/[\r|\n]//g;
1676 }
1677 return $new_org_title;
1678}
1679
1680# signout_page
1681sub command4 {
1682 print "When users click the Sign Out button they will be logged out and\n";
1683 print "then sent to signout_page. If signout_page is left empty,\n";
1684 print "(hit space and then return) they will be taken, as normal,\n";
1685 print "to the default and rather sparse SquirrelMail signout page.\n";
1686 print "\n";
1687 print "[$WHT$signout_page$NRM]: $WHT";
1688 $new_signout_page = <STDIN>;
1689 if ($new_signout_page eq "\n") {
1690 $new_signout_page = $signout_page;
1691 } else {
1692 $new_signout_page =~ s/[\r|\n]//g;
1693 $new_signout_page =~ s/^\s+$//g;
1694 }
1695 return $new_signout_page;
1696}
1697
1698# Default language
1699sub command5 {
1700 print "SquirrelMail attempts to set the language in many ways. If it\n";
1701 print "can not figure it out in another way, it will default to this\n";
1702 print "language. Please use the two-letter code for the desired language.\n";
1703 print "\n";
1704 print "[$WHT$squirrelmail_default_language$NRM]: $WHT";
1705 $new_signout_page = <STDIN>;
1706 if ($new_signout_page eq "\n") {
1707 $new_signout_page = $squirrelmail_default_language;
1708 } else {
1709 $new_signout_page =~ s/[\r|\n]//g;
1710 $new_signout_page =~ s/^\s+$//g;
1711 }
1712 return $new_signout_page;
1713}
1714
1715####################################################################################
1716
1717# domain
1718sub command11 {
1719 print "The domain name is the suffix at the end of all email messages. If\n";
1720 print "for example, your email address is jdoe\@myorg.com, then your domain\n";
1721 print "would be myorg.com.\n";
1722 print "\n";
1723 print "[$WHT$domain$NRM]: $WHT";
1724 $new_domain = <STDIN>;
1725 if ($new_domain eq "\n") {
1726 $new_domain = $domain;
1727 } else {
1728 $new_domain =~ s/[\r|\n]//g;
1729 }
1730 return $new_domain;
1731}
1732
1733# imapServerAddress
1734sub command12 {
1735 print "This is the address where your IMAP server resides.\n";
1736 print "[$WHT$imapServerAddress$NRM]: $WHT";
1737 $new_imapServerAddress = <STDIN>;
1738 if ($new_imapServerAddress eq "\n") {
1739 $new_imapServerAddress = $imapServerAddress;
1740 } else {
1741 $new_imapServerAddress =~ s/[\r|\n]//g;
1742 }
1743 return $new_imapServerAddress;
1744}
1745
1746# imapPort
1747sub command13 {
1748 print "This is the port that your IMAP server is on. Usually this is 143.\n";
1749 print "[$WHT$imapPort$NRM]: $WHT";
1750 $new_imapPort = <STDIN>;
1751 if ($new_imapPort eq "\n") {
1752 $new_imapPort = $imapPort;
1753 } else {
1754 $new_imapPort =~ s/[\r|\n]//g;
1755 }
1756 return $new_imapPort;
1757}
1758
1759# useSendmail
1760sub command14 {
1761 print "You now need to choose the method that you will use for sending\n";
1762 print "messages in SquirrelMail. You can either connect to an SMTP server\n";
1763 print "or use sendmail directly.\n";
1764 if ($useSendmail eq "true") {
1765 $default_value = "1";
1766 } else {
1767 $default_value = "2";
1768 }
1769 print "\n";
1770 print " 1. Sendmail\n";
1771 print " 2. SMTP\n";
1772 print "Your choice [1/2] [$WHT$default_value$NRM]: $WHT";
1773 $use_sendmail = <STDIN>;
1774 if (($use_sendmail =~ /^1\n/i) || (($use_sendmail =~ /^\n/) && ($default_value eq "1"))) {
1775 $useSendmail = "true";
1776 } else {
1777 $useSendmail = "false";
1778 }
1779 return $useSendmail;
1780}
1781
1782# sendmail_path
1783sub command15 {
1784 if ($sendmail_path[0] !~ /./) {
1785 $sendmail_path = "/usr/sbin/sendmail";
1786 }
1787 print "Specify where the sendmail executable is located. Usually /usr/sbin/sendmail\n";
1788 print "[$WHT$sendmail_path$NRM]: $WHT";
1789 $new_sendmail_path = <STDIN>;
1790 if ($new_sendmail_path eq "\n") {
1791 $new_sendmail_path = $sendmail_path;
1792 } else {
1793 $new_sendmail_path =~ s/[\r|\n]//g;
1794 }
1795 return $new_sendmail_path;
1796}
1797
1798# smtpServerAddress
1799sub command16 {
1800 print "This is the location of your SMTP server.\n";
1801 print "[$WHT$smtpServerAddress$NRM]: $WHT";
1802 $new_smtpServerAddress = <STDIN>;
1803 if ($new_smtpServerAddress eq "\n") {
1804 $new_smtpServerAddress = $smtpServerAddress;
1805 } else {
1806 $new_smtpServerAddress =~ s/[\r|\n]//g;
1807 }
1808 return $new_smtpServerAddress;
1809}
1810
1811# smtpPort
1812sub command17 {
1813 print "This is the port to connect to for SMTP. Usually 25.\n";
1814 print "[$WHT$smtpPort$NRM]: $WHT";
1815 $new_smtpPort = <STDIN>;
1816 if ($new_smtpPort eq "\n") {
1817 $new_smtpPort = $smtpPort;
1818 } else {
1819 $new_smtpPort =~ s/[\r|\n]//g;
1820 }
1821 return $new_smtpPort;
1822}
1823
1824# authenticated server
1825sub command18 {
1826 print "Do you wish to use an authenticated SMTP server? Your server must\n";
1827 print "support this in order for SquirrelMail to work with it. We implemented\n";
1828 print "it according to RFC 2554.\n";
1829
1830 $YesNo = 'n';
1831 $YesNo = 'y' if ($use_authenticated_smtp eq "true");
1832
1833 print "Use authenticated SMTP server (y/n) [$WHT$YesNo$NRM]: $WHT";
1834
1835 $new_use_authenticated_smtp = <STDIN>;
1836 $new_use_authenticated_smtp =~ tr/yn//cd;
1837 return "true" if ($new_use_authenticated_smtp eq "y");
1838 return "false" if ($new_use_authenticated_smtp eq "n");
1839 return $use_authenticated_smtp;
1840}
1841
1842# imap_server_type
1843sub command19 {
1844 print "Each IMAP server has its own quirks. As much as we tried to stick\n";
1845 print "to standards, it doesn't help much if the IMAP server doesn't follow\n";
1846 print "the same principles. We have made some work-arounds for some of\n";
1847 print "these servers. If you would like to use them, please select your\n";
1848 print "IMAP server. If you do not wish to use these work-arounds, you can\n";
1849 print "set this to \"other\", and none will be used.\n";
1850 print " cyrus = Cyrus IMAP server\n";
1851 print " uw = University of Washington's IMAP server\n";
1852 print " exchange = Microsoft Exchange IMAP server\n";
1853 print " courier = Courier IMAP server\n";
1854 print " other = Not one of the above servers\n";
1855 print "[$WHT$imap_server_type$NRM]: $WHT";
1856 $new_imap_server_type = <STDIN>;
1857 if ($new_imap_server_type eq "\n") {
1858 $new_imap_server_type = $imap_server_type;
1859 } else {
1860 $new_imap_server_type =~ s/[\r|\n]//g;
1861 }
1862 return $new_imap_server_type;
1863}
1864
1865# invert_time
1866sub command110 {
1867 print "Sometimes the date of messages sent is messed up (off by a few hours\n";
1868 print "on some machines). Typically this happens if the system doesn't support\n";
1869 print "tm_gmtoff. It will happen only if your time zone is \"negative\".\n";
1870 print "This most often occurs on Solaris 7 machines in the United States.\n";
1871 print "By default, this is off. It should be kept off unless problems surface\n";
1872 print "about the time that messages are sent.\n";
1873 print " no = Do NOT fix time -- almost always correct\n";
1874 print " yes = Fix the time for this system\n";
1875
1876 $YesNo = 'n';
1877 $YesNo = 'y' if ($invert_time eq "true");
1878
1879 print "Fix the time for this system (y/n) [$WHT$YesNo$NRM]: $WHT";
1880
1881 $new_invert_time = <STDIN>;
1882 $new_invert_time =~ tr/yn//cd;
1883 return "true" if ($new_invert_time eq "y");
1884 return "false" if ($new_invert_time eq "n");
1885 return $invert_time;
1886}
1887
1888sub command111 {
1889 print "This is the delimiter that your IMAP server uses to distinguish between\n";
1890 print "folders. For example, Cyrus uses '.' as the delimiter and a complete\n";
1891 print "folder would look like 'INBOX.Friends.Bob', while UW uses '/' and would\n";
1892 print "look like 'INBOX/Friends/Bob'. Normally this should be left at 'detect'\n";
1893 print "but if you are sure you konw what delimiter your server uses, you can\n";
1894 print "specify it here.\n";
1895 print "\nTo have it autodetect the delimiter, set it to 'detect'.\n\n";
1896 print "[$WHT$optional_delimiter$NRM]: $WHT";
1897 $new_optional_delimiter = <STDIN>;
1898 if ($new_optional_delimiter eq "\n") {
1899 $new_optional_delimiter = $optional_delimiter;
1900 } else {
1901 $new_optional_delimiter =~ s/[\r|\n]//g;
1902 }
1903 return $new_optional_delimiter;
1904}
1905
1906# MOTD
1907sub command71 {
1908 print "\nYou can now create the welcome message that is displayed\n";
1909 print "every time a user logs on. You can use HTML or just plain\n";
1910 print "text. If you do not wish to have one, just make it blank.\n\n(Type @ on a blank line to exit)\n";
1911
1912 $new_motd = "";
1913 do {
1914 print "] ";
1915 $line = <STDIN>;
1916 $line =~ s/[\r|\n]//g;
1917 if ($line ne "@") {
1918 $line =~ s/ /\&nbsp;\&nbsp;/g;
1919 $line =~ s/\t/\&nbsp;\&nbsp;\&nbsp;\&nbsp;/g;
1920 $line =~ s/$/ /;
1921 $line =~ s/\"/\\\"/g;
1922
1923 $new_motd = $new_motd . $line;
1924 }
1925 } while ($line ne "@");
1926 return $new_motd;
1927}
1928
1929################# PLUGINS ###################
1930
1931sub command81 {
1932 $command =~ s/[\s|\n|\r]*//g;
1933 if ($command > 0) {
1934 $command = $command - 1;
1935 if ($command <= $#plugins) {
1936 @newplugins = ();
1937 $ct=0;
1938 while ($ct <= $#plugins) {
1939 if ($ct != $command) {
1940 @newplugins = (@newplugins, $plugins[$ct]);
1941 }
1942 $ct++;
1943 }
1944 @plugins = @newplugins;
1945 } elsif ($command <= $#plugins + $#unused_plugins + 1) {
1946 $num = $command - $#plugins - 1;
1947 @newplugins = @plugins;
1948 $ct=0;
1949 while ($ct <= $#unused_plugins) {
1950 if ($ct == $num) {
1951 @newplugins = (@newplugins, $unused_plugins[$ct]);
1952 # sanitize the plugin
1953 $dir = $unused_plugins[$ct];
1954 `./ri_once.pl ../plugins/$dir`;
1955 }
1956 $ct++;
1957 }
1958 @plugins = @newplugins;
1959 }
1960 }
1961 return @plugins;
1962}
1963
1964sub command8s {
1965 print "This command will sanitize all plugins for use with\n";
1966 print "Squirrelmail 1.2. That is, it will rewrite some php-\n";
1967 print "constructs that are *incompatible* with the 1.2 design\n";
1968 print "into ones that are *compatible*\n";
1969 print "Do you wish to issue this command [y/N]? ";
1970 $ctu = <STDIN>;
1971 if ($ctu =~ /^y\n/i) {
1972 `./ri_once.pl ../plugins`;
1973 }
1974}
1975
1976################# FOLDERS ###################
1977
1978# default_folder_prefix
1979sub command21 {
1980 print "Some IMAP servers (UW, for example) store mail and folders in\n";
1981 print "your user space in a separate subdirectory. This is where you\n";
1982 print "specify what that directory is.\n";
1983 print "\n";
1984 print "EXAMPLE: mail/";
1985 print "\n";
1986 print "NOTE: If you use Cyrus, or some server that would not use this\n";
1987 print " option, you must set this to 'none'.\n";
1988 print "\n";
1989 print "[$WHT$default_folder_prefix$NRM]: $WHT";
1990 $new_default_folder_prefix = <STDIN>;
1991 if ($new_default_folder_prefix eq "\n") {
1992 $new_default_folder_prefix = $default_folder_prefix;
1993 } else {
1994 $new_default_folder_prefix =~ s/[\r|\n]//g;
1995 }
1996 if (($new_default_folder_prefix =~ /^\s*$/) || ($new_default_folder_prefix =~ /none/i)) {
1997 $new_default_folder_prefix = "";
1998 } else {
1999 $new_default_folder_prefix =~ s/\/*$//g;
2000 $new_default_folder_prefix =~ s/$/\//g;
2001 }
2002 return $new_default_folder_prefix;
2003}
2004
2005# Show Folder Prefix
2006sub command22 {
2007 print "It is possible to set up the default folder prefix as a user\n";
2008 print "specific option, where each user can specify what their mail\n";
2009 print "folder is. If you set this to false, they will never see the\n";
2010 print "option, but if it is true, this option will appear in the\n";
2011 print "'options' section.\n";
2012 print "\n";
2013 print "NOTE: You set the default folder prefix in option '1' of this\n";
2014 print " section. That will be the default if the user doesn't\n";
2015 print " specify anything different.\n";
2016 print "\n";
2017
2018 if ($show_prefix_option eq "true") {
2019 $default_value = "y";
2020 } else {
2021 $default_value = "n";
2022 }
2023 print "\n";
2024 print "Show option (y/n) [$WHT$default_value$NRM]: $WHT";
2025 $new_show = <STDIN>;
2026 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2027 $show_prefix_option = "true";
2028 } else {
2029 $show_prefix_option = "false";
2030 }
2031 return $show_prefix_option;
2032}
2033
2034# Trash Folder
2035sub command23a {
2036 print "You can now specify where the default trash folder is located.\n";
2037 print "On servers where you do not want this, you can set it to anything\n";
2038 print "and set option 6 to false.\n";
2039 print "\n";
2040 print "This is relative to where the rest of your email is kept. You do\n";
2041 print "not need to worry about their mail directory. If this folder\n";
2042 print "would be ~/mail/trash on the filesystem, you only need to specify\n";
2043 print "that this is 'trash', and be sure to put 'mail/' in option 1.\n";
2044 print "\n";
2045
2046 print "[$WHT$trash_folder$NRM]: $WHT";
2047 $new_trash_folder = <STDIN>;
2048 if ($new_trash_folder eq "\n") {
2049 $new_trash_folder = $trash_folder;
2050 } else {
2051 $new_trash_folder =~ s/[\r|\n]//g;
2052 }
2053 return $new_trash_folder;
2054}
2055
2056# Sent Folder
2057sub command23b {
2058 print "This is where messages that are sent will be stored. SquirrelMail\n";
2059 print "by default puts a copy of all outgoing messages in this folder.\n";
2060 print "\n";
2061 print "This is relative to where the rest of your email is kept. You do\n";
2062 print "not need to worry about their mail directory. If this folder\n";
2063 print "would be ~/mail/sent on the filesystem, you only need to specify\n";
2064 print "that this is 'sent', and be sure to put 'mail/' in option 1.\n";
2065 print "\n";
2066
2067 print "[$WHT$sent_folder$NRM]: $WHT";
2068 $new_sent_folder = <STDIN>;
2069 if ($new_sent_folder eq "\n") {
2070 $new_sent_folder = $sent_folder;
2071 } else {
2072 $new_sent_folder =~ s/[\r|\n]//g;
2073 }
2074 return $new_sent_folder;
2075}
2076
2077# Draft Folder
2078sub command23c {
2079 print "You can now specify where the default draft folder is located.\n";
2080 print "On servers where you do not want this, you can set it to anything\n";
2081 print "and set option 9 to false.\n";
2082 print "\n";
2083 print "This is relative to where the rest of your email is kept. You do\n";
2084 print "not need to worry about their mail directory. If this folder\n";
2085 print "would be ~/mail/drafts on the filesystem, you only need to specify\n";
2086 print "that this is 'drafts', and be sure to put 'mail/' in option 1.\n";
2087 print "\n";
2088
2089 print "[$WHT$draft_folder$NRM]: $WHT";
2090 $new_draft_folder = <STDIN>;
2091 if ($new_draft_folder eq "\n") {
2092 $new_draft_folder = $draft_folder;
2093 } else {
2094 $new_draft_folder =~ s/[\r|\n]//g;
2095 }
2096 return $new_draft_folder;
2097}
2098
2099# default move to trash
2100sub command24a {
2101 print "By default, should messages get moved to the trash folder? You\n";
2102 print "can specify the default trash folder in option 3. If this is set\n";
2103 print "to false, messages will get deleted immediately without moving\n";
2104 print "to the trash folder.\n";
2105 print "\n";
2106 print "Trash folder is currently: $trash_folder\n";
2107 print "\n";
2108
2109 if ($default_move_to_trash eq "true") {
2110 $default_value = "y";
2111 } else {
2112 $default_value = "n";
2113 }
2114 print "By default, move to trash (y/n) [$WHT$default_value$NRM]: $WHT";
2115 $new_show = <STDIN>;
2116 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2117 $default_move_to_trash = "true";
2118 } else {
2119 $default_move_to_trash = "false";
2120 }
2121 return $default_move_to_trash;
2122}
2123
2124# default move to sent
2125sub command24b {
2126 print "By default, should messages get moved to the sent folder? You\n";
2127 print "can specify the default sent folder in option 4. If this is set\n";
2128 print "to false, messages will get sent an no copy will be made.\n";
2129 print "\n";
2130 print "Trash folder is currently: $sent_folder\n";
2131 print "\n";
2132
2133 if ($default_move_to_sent eq "true") {
2134 $default_value = "y";
2135 } else {
2136 $default_value = "n";
2137 }
2138 print "By default, move to sent (y/n) [$WHT$default_value$NRM]: $WHT";
2139 $new_show = <STDIN>;
2140 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2141 $default_move_to_sent = "true";
2142 } else {
2143 $default_move_to_sent = "false";
2144 }
2145 return $default_move_to_sent;
2146}
2147
2148# default save as draft
2149sub command24c {
2150 print "By default, should the save to draft option be shown? You can\n";
2151 print "specify the default drafts folder in option 5. If this is set\n";
2152 print "to false, users will not be shown the save to draft option.\n";
2153 print "\n";
2154 print "Drafts folder is currently: $draft_folder\n";
2155 print "\n";
2156
2157 if ($default_move_to_draft eq "true") {
2158 $default_value = "y";
2159 } else {
2160 $default_value = "n";
2161 }
2162 print "By default, save as draft (y/n) [$WHT$default_value$NRM]: $WHT";
2163 $new_show = <STDIN>;
2164 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2165 $default_save_as_draft = "true";
2166 } else {
2167 $default_save_as_draft = "false";
2168 }
2169 return $default_save_as_draft;
2170}
2171
2172# List special folders first
2173sub command27 {
2174 print "SquirrelMail has what we call 'special folders' that are not\n";
2175 print "manipulated and viewed like normal folders. Some examples of\n";
2176 print "these folders would be INBOX, Trash, Sent, etc. This option\n";
2177 print "Simply asks if you want these folders listed first in the folder\n";
2178 print "listing.\n";
2179 print "\n";
2180
2181 if ($list_special_folders_first eq "true") {
2182 $default_value = "y";
2183 } else {
2184 $default_value = "n";
2185 }
2186 print "\n";
2187 print "List first (y/n) [$WHT$default_value$NRM]: $WHT";
2188 $new_show = <STDIN>;
2189 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2190 $list_special_folders_first = "true";
2191 } else {
2192 $list_special_folders_first = "false";
2193 }
2194 return $list_special_folders_first;
2195}
2196
2197# Show special folders color
2198sub command28 {
2199 print "SquirrelMail has what we call 'special folders' that are not\n";
2200 print "manipulated and viewed like normal folders. Some examples of\n";
2201 print "these folders would be INBOX, Trash, Sent, etc. This option\n";
2202 print "wants to know if we should display special folders in a\n";
2203 print "color than the other folders.\n";
2204 print "\n";
2205
2206 if ($use_special_folder_color eq "true") {
2207 $default_value = "y";
2208 } else {
2209 $default_value = "n";
2210 }
2211 print "\n";
2212 print "Show color (y/n) [$WHT$default_value$NRM]: $WHT";
2213 $new_show = <STDIN>;
2214 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2215 $use_special_folder_color = "true";
2216 } else {
2217 $use_special_folder_color = "false";
2218 }
2219 return $use_special_folder_color;
2220}
2221
2222# Auto expunge
2223sub command29 {
2224 print "The way that IMAP handles deleting messages is as follows. You\n";
2225 print "mark the message as deleted, and then to 'really' delete it, you\n";
2226 print "expunge it. This option asks if you want to just have messages\n";
2227 print "marked as deleted, or if you want SquirrelMail to expunge the \n";
2228 print "messages too.\n";
2229 print "\n";
2230
2231 if ($auto_expunge eq "true") {
2232 $default_value = "y";
2233 } else {
2234 $default_value = "n";
2235 }
2236 print "Auto expunge (y/n) [$WHT$default_value$NRM]: $WHT";
2237 $new_show = <STDIN>;
2238 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2239 $auto_expunge = "true";
2240 } else {
2241 $auto_expunge = "false";
2242 }
2243 return $auto_expunge;
2244}
2245
2246# Default sub of inbox
2247sub command210 {
2248 print "Some IMAP servers (Cyrus) have all folders as subfolders of INBOX.\n";
2249 print "This can cause some confusion in folder creation for users when\n";
2250 print "they try to create folders and don't put it as a subfolder of INBOX\n";
2251 print "and get permission errors. This option asks if you want folders\n";
2252 print "to be subfolders of INBOX by default.\n";
2253 print "\n";
2254
2255 if ($default_sub_of_inbox eq "true") {
2256 $default_value = "y";
2257 } else {
2258 $default_value = "n";
2259 }
2260 print "Default sub of INBOX (y/n) [$WHT$default_value$NRM]: $WHT";
2261 $new_show = <STDIN>;
2262 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2263 $default_sub_of_inbox = "true";
2264 } else {
2265 $default_sub_of_inbox = "false";
2266 }
2267 return $default_sub_of_inbox;
2268}
2269
2270# Show contain subfolder option
2271sub command211 {
2272 print "Some IMAP servers (UW) make it so that there are two types of\n";
2273 print "folders. Those that contain messages, and those that contain\n";
2274 print "subfolders. If this is the case for your server, set this to\n";
2275 print "true, and it will ask the user whether the folder they are\n";
2276 print "creating contains subfolders or messages.\n";
2277 print "\n";
2278
2279 if ($show_contain_subfolders_option eq "true") {
2280 $default_value = "y";
2281 } else {
2282 $default_value = "n";
2283 }
2284 print "Show option (y/n) [$WHT$default_value$NRM]: $WHT";
2285 $new_show = <STDIN>;
2286 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2287 $show_contain_subfolders_option = "true";
2288 } else {
2289 $show_contain_subfolders_option = "false";
2290 }
2291 return $show_contain_subfolders_option;
2292}
2293
2294# Default Unseen Notify
2295sub command212 {
2296 print "This option specifies where the users will receive notification\n";
2297 print "about unseen messages by default. This is of course an option that\n";
2298 print "can be changed on a user level.\n";
2299 print " 1 = No notification\n";
2300 print " 2 = Only on the INBOX\n";
2301 print " 3 = On all folders\n";
2302 print "\n";
2303
2304 print "Which one should be default (1,2,3)? [$WHT$default_unseen_notify$NRM]: $WHT";
2305 $new_show = <STDIN>;
2306 if ($new_show =~ /^[1|2|3]\n/i) {
2307 $default_unseen_notify = $new_show;
2308 }
2309 $default_unseen_notify =~ s/[\r|\n]//g;
2310 return $default_unseen_notify;
2311}
2312
2313# Default Unseen Type
2314sub command213 {
2315 print "Here you can define the default way that unseen messages will be displayed\n";
2316 print "to the user in the folder listing on the left side.\n";
2317 print " 1 = Only unseen messages (4)\n";
2318 print " 2 = Unseen and Total messages (4/27)\n";
2319 print "\n";
2320
2321 print "Which one should be default (1,2)? [$WHT$default_unseen_type$NRM]: $WHT";
2322 $new_show = <STDIN>;
2323 if ($new_show =~ /^[1|2]\n/i) {
2324 $default_unseen_type = $new_show;
2325 }
2326 $default_unseen_type =~ s/[\r|\n]//g;
2327 return $default_unseen_type;
2328}
2329
2330# Auto create special folders
2331sub command214 {
2332 print "Would you like the Sent, Trash, and Drafts folders to be created\n";
2333 print "automatically print for you when a user logs in? If the user\n";
2334 print "accidentally deletes their special folders, this option will\n";
2335 print "automatically create it again for them.\n";
2336 print "\n";
2337
2338 if ($auto_create_special eq "true") {
2339 $default_value = "y";
2340 } else {
2341 $default_value = "n";
2342 }
2343 print "Auto create special folders? (y/n) [$WHT$default_value$NRM]: $WHT";
2344 $new_show = <STDIN>;
2345 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2346 $auto_create_special = "true";
2347 } else {
2348 $auto_create_special = "false";
2349 }
2350 return $auto_create_special;
2351}
2352
2353
2354############# GENERAL OPTIONS #####################
2355
2356# Default Charset
2357sub command31 {
2358 print "This option controls what character set is used when sending\n";
2359 print "mail and when sending HTML to the browser. Do not set this\n";
2360 print "to US-ASCII, use ISO-8859-1 instead. For cyrillic, it is best\n";
2361 print "to use KOI8-R, since this implementation is faster than most\n";
2362 print "of the alternatives\n";
2363 print "\n";
2364
2365 print "[$WHT$default_charset$NRM]: $WHT";
2366 $new_default_charset = <STDIN>;
2367 if ($new_default_charset eq "\n") {
2368 $new_default_charset = $default_charset;
2369 } else {
2370 $new_default_charset =~ s/[\r|\n]//g;
2371 }
2372 return $new_default_charset;
2373}
2374
2375# Data directory
2376sub command33 {
2377 print "It is a possible security hole to have a writable directory\n";
2378 print "under the web server's root directory (ex: /home/httpd/html).\n";
2379 print "For this reason, it is possible to put the data directory\n";
2380 print "anywhere you would like. The path name can be absolute or\n";
2381 print "relative (to the config directory). It doesn't matter. Here\n";
2382 print "are two examples:\n";
2383 print " Absolute: /usr/local/squirrelmail/data/\n";
2384 print " Relative: ../data/\n";
2385 print "\n";
2386
2387 print "[$WHT$data_dir$NRM]: $WHT";
2388 $new_data_dir = <STDIN>;
2389 if ($new_data_dir eq "\n") {
2390 $new_data_dir = $data_dir;
2391 } else {
2392 $new_data_dir =~ s/[\r|\n]//g;
2393 }
2394 if ($new_data_dir =~ /^\s*$/) {
2395 $new_data_dir = "";
2396 } else {
2397 $new_data_dir =~ s/\/*$//g;
2398 $new_data_dir =~ s/$/\//g;
2399 }
2400 return $new_data_dir;
2401}
2402
2403# Attachment directory
2404sub command34 {
2405 print "Path to directory used for storing attachments while a mail is\n";
2406 print "being sent. There are a few security considerations regarding this\n";
2407 print "directory:\n";
2408 print " 1. It should have the permission 733 (rwx-wx-wx) to make it\n";
2409 print " impossible for a random person with access to the webserver\n";
2410 print " to list files in this directory. Confidential data might\n";
2411 print " be laying around in there.\n";
2412 print " 2. Since the webserver is not able to list the files in the\n";
2413 print " content is also impossible for the webserver to delete files\n";
2414 print " lying around there for too long.\n";
2415 print " 3. It should probably be another directory than the data\n";
2416 print " directory specified in option 3.\n";
2417 print "\n";
2418
2419 print "[$WHT$attachment_dir$NRM]: $WHT";
2420 $new_attachment_dir = <STDIN>;
2421 if ($new_attachment_dir eq "\n") {
2422 $new_attachment_dir = $attachment_dir;
2423 } else {
2424 $new_attachment_dir =~ s/[\r|\n]//g;
2425 }
2426 if ($new_attachment_dir =~ /^\s*$/) {
2427 $new_attachment_dir = "";
2428 } else {
2429 $new_attachment_dir =~ s/\/*$//g;
2430 $new_attachment_dir =~ s/$/\//g;
2431 }
2432 return $new_attachment_dir;
2433}
2434
2435
2436sub command35 {
2437 print "This is the default size (in pixels) of the left folder list.\n";
2438 print "Default is 200, but you can set it to whatever you wish. This\n";
2439 print "is a user preference, so this will only show up as their default.\n";
2440 print "\n";
2441 print "[$WHT$default_left_size$NRM]: $WHT";
2442 $new_default_left_size = <STDIN>;
2443 if ($new_default_left_size eq "\n") {
2444 $new_default_left_size = $default_left_size;
2445 } else {
2446 $new_default_left_size =~ s/[\r|\n]//g;
2447 }
2448 return $new_default_left_size;
2449}
2450
2451
2452sub command36 {
2453 print "Some IMAP servers only have lowercase letters in the usernames\n";
2454 print "but they still allow people with uppercase to log in. This\n";
2455 print "causes a problem with the user's preference files. This option\n";
2456 print "transparently changes all usernames to lowercase.";
2457 print "\n";
2458
2459 if ($force_username_lowercase eq "true") {
2460 $default_value = "y";
2461 } else {
2462 $default_value = "n";
2463 }
2464 print "Convert usernames to lowercase (y/n) [$WHT$default_value$NRM]: $WHT";
2465 $new_show = <STDIN>;
2466 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2467 return "true";
2468 }
2469 return "false";
2470}
2471
2472sub command37 {
2473 print "";
2474 print "\n";
2475
2476 if ($default_use_priority eq "true") {
2477 $default_value = "y";
2478 } else {
2479 $default_value = "n";
2480 }
2481
2482 print "Allow users to specify priority of outgoing mail (y/n) [$WHT$default_value$NRM]: $WHT";
2483 $new_show = <STDIN>;
2484 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2485 return "true";
2486 }
2487 return "false";
2488}
2489
2490
2491sub command38 {
2492 print "";
2493 print "\n";
2494
2495 if ($default_hide_attribution eq "true") {
2496 $default_value = "y";
2497 } else {
2498 $default_value = "n";
2499 }
2500
2501 print "Hide SM attributions (y/n) [$WHT$default_value$NRM]: $WHT";
2502 $new_show = <STDIN>;
2503 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2504 return "true";
2505 }
2506 return "false";
2507}
2508
2509
2510sub command41 {
2511 print "\nNow we will define the themes that you wish to use. If you have added\n";
2512 print "a theme of your own, just follow the instructions (?) about how to add\n";
2513 print "them. You can also change the default theme.\n";
2514 print "[theme] command (?=help) > ";
2515 $input = <STDIN>;
2516 $input =~ s/[\r|\n]//g;
2517 while ($input ne "d") {
2518 if ($input =~ /^\s*l\s*/i) {
2519 $count = 0;
2520 while ($count <= $#theme_name) {
2521 if ($count == $theme_default) {
2522 print " *";
2523 } else {
2524 print " ";
2525 }
2526 $name = $theme_name[$count];
2527 $num_spaces = 25 - length($name);
2528 for ($i = 0; $i < $num_spaces;$i++) {
2529 $name = $name . " ";
2530 }
2531
2532 print " $count. $name";
2533 print "($theme_path[$count])\n";
2534
2535 $count++;
2536 }
2537 } elsif ($input =~ /^\s*m\s*[0-9]+/i) {
2538 $old_def = $theme_default;
2539 $theme_default = $input;
2540 $theme_default =~ s/^\s*m\s*//;
2541 if (($theme_default > $#theme_name) || ($theme_default < 0)) {
2542 print "Cannot set default theme to $theme_default. That theme does not exist.\n";
2543 $theme_default = $old_def;
2544 }
2545 } elsif ($input =~ /^\s*\+/) {
2546 print "What is the name of this theme: ";
2547 $name = <STDIN>;
2548 $name =~ s/[\r|\n]//g;
2549 $theme_name[$#theme_name+1] = $name;
2550 print "Be sure to put ../themes/ before the filename.\n";
2551 print "What file is this stored in (ex: ../themes/default_theme.php): ";
2552 $name = <STDIN>;
2553 $name =~ s/[\r|\n]//g;
2554 $theme_path[$#theme_path+1] = $name;
2555 } elsif ($input =~ /^\s*-\s*[0-9]?/) {
2556 if ($input =~ /[0-9]+\s*$/) {
2557 $rem_num = $input;
2558 $rem_num =~ s/^\s*-\s*//g;
2559 $rem_num =~ s/\s*$//;
2560 } else {
2561 $rem_num = $#theme_name;
2562 }
2563 if ($rem_num == $theme_default) {
2564 print "You cannot remove the default theme!\n";
2565 } else {
2566 $count = 0;
2567 @new_theme_name = ();
2568 @new_theme_path = ();
2569 while ($count <= $#theme_name) {
2570 if ($count != $rem_num) {
2571 @new_theme_name = (@new_theme_name, $theme_name[$count]);
2572 @new_theme_path = (@new_theme_path, $theme_path[$count]);
2573 }
2574 $count++;
2575 }
2576 @theme_name = @new_theme_name;
2577 @theme_path = @new_theme_path;
2578 if ($theme_default > $rem_num) {
2579 $theme_default--;
2580 }
2581 }
2582 } elsif ($input =~ /^\s*t\s*/i) {
2583 print "\nStarting detection...\n\n";
2584
2585 opendir(DIR, "../themes");
2586 @files = grep { /\.php$/i } readdir(DIR);
2587 $cnt = 0;
2588 while ($cnt <= $#files) {
2589 $filename = "../themes/" . $files[$cnt];
2590 if ($filename ne "../themes/index.php") {
2591 $found = 0;
2592 for ($x=0; $x <= $#theme_path; $x++) {
2593 if ($theme_path[$x] eq $filename) {
2594 $found = 1;
2595 }
2596 }
2597 if ($found != 1) {
2598 print "** Found theme: $filename\n";
2599 print " What is its name? ";
2600 $nm = <STDIN>;
2601 $nm =~ s/[\n|\r]//g;
2602 $theme_name[$#theme_name+1] = $nm;
2603 $theme_path[$#theme_path+1] = $filename;
2604 }
2605 }
2606 $cnt++;
2607 }
2608 print "\n";
2609 for ($cnt=0; $cnt <= $#theme_path; $cnt++) {
2610 $filename = $theme_path[$cnt];
2611 if (! (-e $filename)) {
2612 print " Removing $filename (file not found)\n";
2613 $offset = 0;
2614 @new_theme_name = ();
2615 @new_theme_path = ();
2616 for ($x=0; $x < $#theme_path; $x++) {
2617 if ($theme_path[$x] eq $filename) {
2618 $offset = 1;
2619 }
2620 if ($offset == 1) {
2621 $new_theme_name[$x] = $theme_name[$x+1];
2622 $new_theme_path[$x] = $theme_path[$x+1];
2623 } else {
2624 $new_theme_name[$x] = $theme_name[$x];
2625 $new_theme_path[$x] = $theme_path[$x];
2626 }
2627 }
2628 @theme_name = @new_theme_name;
2629 @theme_path = @new_theme_path;
2630 }
2631 }
2632 print "\nDetection complete!\n\n";
2633
2634 closedir DIR;
2635 } elsif ($input =~ /^\s*\?\s*/) {
2636 print ".-------------------------.\n";
2637 print "| t (detect themes) |\n";
2638 print "| + (add theme) |\n";
2639 print "| - N (remove theme) |\n";
2640 print "| m N (mark default) |\n";
2641 print "| l (list themes) |\n";
2642 print "| d (done) |\n";
2643 print "`-------------------------'\n";
2644 }
2645 print "[theme] command (?=help) > ";
2646 $input = <STDIN>;
2647 $input =~ s/[\r|\n]//g;
2648 }
2649}
2650
2651
2652# Theme - CSS file
2653sub command42 {
2654 print "You may specify a cascading style-sheet (CSS) file to be included\n";
2655 print "on each html page generated by SquirrelMail. The CSS file is useful\n";
2656 print "for specifying a site-wide font. If you're not familiar with CSS\n";
2657 print "files, leave this blank.\n";
2658 print "\n";
2659 print "To clear out an existing value, just type a space for the input.\n";
2660 print "\n";
2661 print "[$WHT$theme_css$NRM]: $WHT";
2662 $new_theme_css = <STDIN>;
2663 if ($new_theme_css eq "\n") {
2664 $new_theme_css = $theme_css;
2665 } else {
2666 $new_theme_css =~ s/[\r|\n]//g;
2667 }
2668 $new_theme_css =~ s/^\s*//;
2669 return $new_theme_css;
2670}
2671
2672
2673sub command61 {
2674 print "You can now define different LDAP servers.\n";
2675 print "[ldap] command (?=help) > ";
2676 $input = <STDIN>;
2677 $input =~ s/[\r|\n]//g;
2678 while ($input ne "d") {
2679 if ($input =~ /^\s*l\s*/i) {
2680 $count = 0;
2681 while ($count <= $#ldap_host) {
2682 print "$count. $ldap_host[$count]\n";
2683 print " base: $ldap_base[$count]\n";
2684 if ($ldap_charset[$count]) {
2685 print " charset: $ldap_charset[$count]\n";
2686 }
2687 if ($ldap_port[$count]) {
2688 print " port: $ldap_port[$count]\n";
2689 }
2690 if ($ldap_name[$count]) {
2691 print " name: $ldap_name[$count]\n";
2692 }
2693 if ($ldap_maxrows[$count]) {
2694 print " maxrows: $ldap_maxrows[$count]\n";
2695 }
2696 print "\n";
2697 $count++;
2698 }
2699 } elsif ($input =~ /^\s*\+/) {
2700 $sub = $#ldap_host + 1;
2701
2702 print "First, we need to have the hostname or the IP address where\n";
2703 print "this LDAP server resides. Example: ldap.bigfoot.com\n";
2704 print "hostname: ";
2705 $name = <STDIN>;
2706 $name =~ s/[\r|\n]//g;
2707 $ldap_host[$sub] = $name;
2708
2709 print "\n";
2710
2711 print "Next, we need the server root (base dn). For this, an empty\n";
2712 print "string is allowed.\n";
2713 print "Example: ou=member_directory,o=netcenter.com\n";
2714 print "base: ";
2715 $name = <STDIN>;
2716 $name =~ s/[\r|\n]//g;
2717 $ldap_base[$sub] = $name;
2718
2719 print "\n";
2720
2721 print "This is the TCP/IP port number for the LDAP server. Default\n";
2722 print "port is 389. This is optional. Press ENTER for default.\n";
2723 print "port: ";
2724 $name = <STDIN>;
2725 $name =~ s/[\r|\n]//g;
2726 $ldap_port[$sub] = $name;
2727
2728 print "\n";
2729
2730 print "This is the charset for the server. Default is utf-8. This\n";
2731 print "is also optional. Press ENTER for default.\n";
2732 print "charset: ";
2733 $name = <STDIN>;
2734 $name =~ s/[\r|\n]//g;
2735 $ldap_charset[$sub] = $name;
2736
2737 print "\n";
2738
2739 print "This is the name for the server, used to tag the results of\n";
2740 print "the search. Default it \"LDAP: hostname\". Press ENTER for default\n";
2741 print "name: ";
2742 $name = <STDIN>;
2743 $name =~ s/[\r|\n]//g;
2744 $ldap_name[$sub] = $name;
2745
2746 print "\n";
2747
2748 print "You can specify the maximum number of rows in the search result.\n";
2749 print "Default is unlimited. Press ENTER for default.\n";
2750 print "maxrows: ";
2751 $name = <STDIN>;
2752 $name =~ s/[\r|\n]//g;
2753 $ldap_maxrows[$sub] = $name;
2754
2755 print "\n";
2756
2757 } elsif ($input =~ /^\s*-\s*[0-9]?/) {
2758 if ($input =~ /[0-9]+\s*$/) {
2759 $rem_num = $input;
2760 $rem_num =~ s/^\s*-\s*//g;
2761 $rem_num =~ s/\s*$//;
2762 } else {
2763 $rem_num = $#ldap_host;
2764 }
2765 $count = 0;
2766 @new_ldap_host = ();
2767 @new_ldap_base = ();
2768 @new_ldap_port = ();
2769 @new_ldap_name = ();
2770 @new_ldap_charset = ();
2771 @new_ldap_maxrows = ();
2772 while ($count <= $#ldap_host) {
2773 if ($count != $rem_num) {
2774 @new_ldap_host = (@new_ldap_host, $ldap_host[$count]);
2775 @new_ldap_base = (@new_ldap_base, $ldap_base[$count]);
2776 @new_ldap_port = (@new_ldap_port, $ldap_port[$count]);
2777 @new_ldap_name = (@new_ldap_name, $ldap_name[$count]);
2778 @new_ldap_charset = (@new_ldap_charset, $ldap_charset[$count]);
2779 @new_ldap_maxrows = (@new_ldap_maxrows, $ldap_maxrows[$count]);
2780 }
2781 $count++;
2782 }
2783 @ldap_host = @new_ldap_host;
2784 @ldap_base = @new_ldap_base;
2785 @ldap_port = @new_ldap_port;
2786 @ldap_name = @new_ldap_name;
2787 @ldap_charset = @new_ldap_charset;
2788 @ldap_maxrows = @new_ldap_maxrows;
2789 } elsif ($input =~ /^\s*\?\s*/) {
2790 print ".-------------------------.\n";
2791 print "| + (add host) |\n";
2792 print "| - N (remove host) |\n";
2793 print "| l (list hosts) |\n";
2794 print "| d (done) |\n";
2795 print "`-------------------------'\n";
2796 }
2797 print "[ldap] command (?=help) > ";
2798 $input = <STDIN>;
2799 $input =~ s/[\r|\n]//g;
2800 }
2801}
2802
2803sub command62 {
2804 print "Some of our developers have come up with very good javascript interface\n";
2805 print "for searching through address books, however, our original goals said\n";
2806 print "that we would be 100% HTML. In order to make it possible to use their\n";
2807 print "interface, and yet stick with our goals, we have also written a plain\n";
2808 print "HTML version of the search. Here, you can choose which version to use.\n";
2809 print "\n";
2810 print "This is just the default value. It is also a user option that each\n";
2811 print "user can configure individually\n";
2812 print "\n";
2813
2814 if ($default_use_javascript_addr_book eq "true") {
2815 $default_value = "y";
2816 } else {
2817 $default_use_javascript_addr_book = "false";
2818 $default_value = "n";
2819 }
2820 print "Use javascript version by default (y/n) [$WHT$default_value$NRM]: $WHT";
2821 $new_show = <STDIN>;
2822 if (($new_show =~ /^y\n/i) || (($new_show =~ /^\n/) && ($default_value eq "y"))) {
2823 $default_use_javascript_addr_book = "true";
2824 } else {
2825 $default_use_javascript_addr_book = "false";
2826 }
2827 return $default_use_javascript_addr_book;
2828}
2829
2830
2831sub save_data {
2832 open (FILE, ">config.php");
2833
2834 print FILE "<?php\n\t/** SquirrelMail configuration\n";
2835 print FILE "\t ** Created using the configure script, conf.pl\n\t **/\n\n";
2836
2837 print FILE "if (defined('config_php'))\n return;\n";
2838 print FILE "define('config_php', true);\n\n";
2839
2840 print FILE "\tglobal \$print_config_version, \$config_version, \$config_use_color;\n";
2841
2842 if ($print_config_version) {
2843 print FILE "\t\$config_version = \"$print_config_version\";\n";
2844 }
2845 print FILE "\t\$config_use_color = $config_use_color;\n";
2846 print FILE "\n";
2847
2848 print FILE "\tglobal \$org_name, \$org_logo, \$org_title, \$signout_page;\n";
2849 print FILE "\t\$org_name = \"$org_name\";\n";
2850 print FILE "\t\$org_logo = \"$org_logo\";\n";
2851 print FILE "\t\$org_title = \"$org_title\";\n";
2852 print FILE "\t\$signout_page = \"$signout_page\";\n";
2853
2854 print FILE "\n";
2855
2856 print FILE "\tglobal \$domain, \$imapServerAddress, \$imapPort;\n";
2857 print FILE "\tglobal \$useSendmail, \$smtpServerAddress, \$smtpPort;\n";
2858 print FILE "\tglobal \$sendmail_path, \$use_authenticated_smtp, \$imap_server_type;\n";
2859 print FILE "\tglobal \$invert_time, \$optional_delimiter;\n";
2860 print FILE "\t\$domain = \"$domain\";\n";
2861 print FILE "\t\$imapServerAddress = \"$imapServerAddress\";\n";
2862 print FILE "\t\$imapPort = $imapPort;\n";
2863 print FILE "\t\$useSendmail = $useSendmail;\n";
2864 print FILE "\t\$smtpServerAddress = \"$smtpServerAddress\";\n";
2865 print FILE "\t\$smtpPort = $